Ну, я считаю, что это допустимо в случае типового параметра типа. Это, вероятно, упростило контрактный одноэлементный класс. Ниже приведен пример:
public interface IEntity {
// some constrains...
DataRow ObjToRow(object obj);
object RowToObj(DataRow dr);
}
//T would be any class inherites from IEntity with default contructor signature.
public interface IMyContract {
T read<T>() where T : IEntity;
void write<T>(T object) where T : IEntity;
}
//everything in the class is static
public static class SqlProvider : IMyContract {
public static T read<T>() where T: IEntity {
DataRow dr = [reading from database]
return T.RowToObj(dr);
}
//compile error here....
public static void write<T>(T obj) where T : IEntity {
DataRow dr = T.ObjToRow(obj);
[ ... commit data row dr to database ... ]
}
}
public static class MyAppleEntity : IEntity {
[... implement IEntity contract normally ... ]
}
public static class MyOrangeEntity : IEntity {
[... implement IEntity contract normally ... ]
}
public class MyTest {
void reading() {
MyAppleEntity apple = SqlProvider.Read<MyAppleEntity>();
MyOrangeEntity orange = SqlProvider.Read<MyOrangeEntity>();
SqlProvider.write<MyAppleEntity>(apple);
SqlProvider.write<MyOrangeEntity>(orange);
}
}
Единственный раз, когда ссылочный тип неявно находится в SqlProvider.read() и писать() и Т хорошо идентичность в точке Invoke. Без статической реализации интерфейса я вынужден писать вот так.
public class MyAppleEntity : IEntity {
[... implement IEntity contract normally ... ]
}
.....
public T read<T>() where T: IEntity, new() {
DataRow dr = [reading from database]
return new T().RowToObj(dr);
}
Очень маленький, но не совсем такой элегантный.
Это не имеет смысла. Как реализовать интерфейс в производном классе XXX? Однако нет причин, по которым вы не можете называть статический член из реализации. – leppie
http://stackoverflow.com/questions/259026/why-doesnt-c-allow-static-methods-to-implement-an-interface – bernhof
@leppie, вы ** можете ** иметь «метод типа»; где не было неявного 'this', но он разрешил метод во время выполнения из этого типа. Редкие случаи, которые могли бы их использовать, могут быть удовлетворены либо методами экземпляра, либо отражением, хотя это не настоятельная потребность ИМО. –