Поместите метод DoTest()
в неуниверсальный интерфейс ITest
.Кроме того, я бы порекомендовал сделать интерфейс ITest
неуниверсальной версией t
.Это довольно распространенный подход, наблюдаемый с такими интерфейсами, как IEnumerable
и IEnumerable<T>
.Преимущество заключается в том, что неуниверсальная версия не становится менее функциональной и, следовательно, может быть полностью использована в местах, где не может быть предоставлен фактический параметр типа.
interface ITest
{
object t { get; }
bool DoTest();
}
interface ITest<T> : ITest
{
T t { get; }
}
Благодаря явной реализации нежелательные неуниверсальная или универсальная версия (в зависимости от реальной ситуации) может быть скрыта:
class STest : ITest<S>
{
public string t { get; private set; }
string ITest.t { get { return t; } }
public bool DoTest { ... }
}