Nicht ganz sicher, wie man die Frage formuliert, weil es ein "warum funktioniert das nicht?" Art der Abfrage.Generische Constraints und Interface-Implementierung/Vererbung
Ich habe mein besonderes Problem reduziert bis zu diesem Code:
public interface IFoo
{
}
public class Foo : IFoo
{
}
public class Bar<T> where T : IFoo
{
public Bar(T t)
{
}
public Bar()
: this(new Foo()) // cannot convert from 'Foo' to 'T'
{
}
}
Nun wird der generische Typ T
in der Bar<T>
Klasse muss IFoo implementieren. Warum gibt mir der Compiler den Fehler im Kommentar? Sicherlich ist eine Instanz von Foo ein IFoo und kann daher als Vertreter des generischen Typs T
weitergegeben werden?
Ist dies eine Compiler-Einschränkung oder fehle ich etwas?
Das ist süß, weil ich nicht wusste, dass du das neue T() Ding, du hast gerade mein Leben in einem Projekt speichern können, an dem ich arbeite. Prost :) –