У меня есть базовый класс с методом, в котором я хотел бы использовать обобщенные элементы, чтобы заставить кодировщика использовать обобщенное выражение для текущего класса:
public class TestClass
{
public void DoStuffWithFuncRef<T>(Expression<Func<T, object>> expression) where T : TestClass
{
this.DoStuffWithFuncRef(Property<T>.NameFor(expression));
}
}
Теперь я хотел бы, чтобы T относился к типу экземпляра класса, который, я надеюсь, заставит компилятор C # автоматически понять использование универсального типа. Например. Я хотел бы избежать кодирования метода doStuff ниже, где я должен указать правильный тип, но лучше использовать метод doStuffILikeButCannotGetToWork:
public class SubTestClass : TestClass
{
public string AProperty { get; set; }
public void doStuff()
{
this.DoStuffWithFuncRef<SubTestClass>(e => e.AProperty);
}
public void doStuffILikeButCannotGetToWork()
{
this.DoStuffWithFuncRef(e => e.AProperty);
}
}
Возможно ли это? Должен ли я делать это по-другому?