Ho una classe di base, con un metodo, in cui vorrei utilizzare farmaci generici per forzare il codificatore per usare un'espressione generica sulla classe corrente:Come riferimento di tipo classe corrente utilizzando farmaci generici
public class TestClass
{
public void DoStuffWithFuncRef<T>(Expression<Func<T, object>> expression) where T : TestClass
{
this.DoStuffWithFuncRef(Property<T>.NameFor(expression));
}
}
Ora , Vorrei forzare T ad essere del tipo della classe istanziata, che spero causerà la causa del compilatore C# per capire automaticamente il tipo generico da usare. Per esempio. Vorrei evitare di codifica il metodo doStuff di seguito, dove devo specificare il tipo corretto - ma piuttosto utilizzare il metodo 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);
}
}
è possibile? Dovrei farlo in un modo diverso?
Grazie. Non pensavo di rendere la classe completa generica nel modo in cui descrivi, ma funziona e causa un piccolo sovraccarico di sintassi. – Thies