Общее правило заключается в том, что я хочу сказать: «У T есть метод с параметром String, который возвращает List». Если говорить более подробно, мы могли бы вызвать интерфейс ICanCreateListOfObjectsFromString. Возможным приложением может быть поиск.
Такое чувство, что было бы неплохо иметь статический метод в моем интерфейсе, но я знаю, что это не разрешено в C #. Каков еще один подход для указания этого вида реализации контракта в классе?
Edit:
Я хотел бы иметь следующий код:
public interface ISearch
{
static List<T> Search<T>(String s);
}
public class MyObject : ISearch {
List<MyObject> Search(string s) {
//...
}
}
public List<T> DoFooSearch<T:ISearch> () {
return T.Search("Foo");
}
public List<T> DoBarSearch<T:ISearch> () {
return T.Search("Bar");
}
Вы, вероятно, можете понять, почему этот код не будет компилироваться, но он выражает дух того, чего я хотел бы достичь. Надеюсь, это немного прояснит мое намерение.