ich eine Basisklasse haben, mit einem Verfahren, in dem ich Generika verwenden möchte den Codierer zu zwingen, einen generischen Ausdruck auf der aktuellen Klasse zu verwenden:Wie aktuelle Klasse Typ referenzieren die Verwendung von Generika
public class TestClass
{
public void DoStuffWithFuncRef<T>(Expression<Func<T, object>> expression) where T : TestClass
{
this.DoStuffWithFuncRef(Property<T>.NameFor(expression));
}
}
Jetzt Ich möchte T zwingen, vom Typ der instanziierten Klasse zu sein, was, wie ich hoffe, dazu führen wird, dass der C# -Compiler den zu verwendenden generischen Typ automatisch versteht. Z.B. Ich möchte unter Codierung der doStuff Verfahren vermeiden, wo ich den richtigen Typ angeben müssen - sondern die doStuffILikeButCannotGetToWork Methode verwenden:
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);
}
}
ist das möglich? Soll ich das anders machen?
Vielen Dank. Ich habe nicht daran gedacht, die komplette Klasse generisch so zu gestalten, wie Sie es beschreiben, aber es funktioniert und verursacht wenig Syntax-Overhead. – Thies