2016-03-18 9 views

Antwort

1

Zusammenfassend können Sie ClassX nicht in eine Klasse umwandeln, die IBase implementiert. Sie können es nur garantiert in IBase selbst umwandeln. Betrachten Sie folgendes Beispiel:

Stellen Sie sich vor, dass Sie eine Klasse ClassA haben, die IBase wie folgt implementiert:

public class ClassA : IBase 
{ 

} 

Nun ClassZ<ClassA> würde wie folgt aussehen (dies ist nicht wirklich Code):

public class ClassZ<ClassA> 
{ 
    Func<IBase> funcInterface = ClassY.FunctionReturnX; //Right 

    Func<ClassA> funcGeneric = ClassY.FunctionReturnX; //Wrong 
} 

ClassY.FunctionReturnX gibt ClassX zurück, die Sie in IBase umwandeln können, aber Sie können es nicht in ClassA umwandeln. Daher erhalten Sie den Komplikationsfehler.

1

Da ClassX ist definitiv ein IBase, aber es könnte nicht TGeneric sein, da etwas anderes könnte IBase implementieren und für TGeneric verwendet werden.

Verwandte Themen