hier zu implementieren ist mein Code:C# - Wie eine nicht generische Schnittstelle in einer generischen Klasse mit Einschränkungen
public interface ICar
{
CarModel Property { get; set; }
CarModel Method();
}
public Car<T> : ICar where T : CarModel
{
T Property { get; set; }
T Method()
{
//Do Stuff
}
}
ich die Schnittstelle in meiner Car<T>
Klasse mit generischen Einschränkungen umgesetzt haben, aber es läßt sich nicht mit dem folgende Fehlermeldung:
Compilation error (line 18, col 15): 'Car<T>' does not implement interface member 'ICar.Property'. 'Car<T>.Property' cannot implement 'ICar.Property' because it does not have the matching return type of 'CarModel'.
Compilation error (line 18, col 15): 'Car<T>' does not implement interface member 'ICar.Method()'. 'Car<T>.Method()' cannot implement 'ICar.Method()' because it does not have the matching return type of 'CarModel'.
ich brauche auch die Schnittstelle nicht generisch zu sein, hier ist eine .Net Geige: https://dotnetfiddle.net/m1jDnB
die einzige Arbeit, um ich habe Dafür muss die Eigenschaft oder Methode mit etwas umschlossen werden, das die Schnittstelle so implementiert, wie sie es will, ABER ich möchte das nicht tun. dh:
public Car<T> : ICar where T : CarModel
{
T Property { get; set; }
T Method()
{
//Do Stuff
}
CarModel ICar.Property
{
get {return Property; }
set {Property = (CarModel)value; }
}
CarModel ICar.Method()
{
return (CarModel)Method();
}
}
Gibt es einen besseren Weg?
Was war der Build-Fehler, sieht aus, als ob Sie die Methode nicht einen Wert zurückgeben. – markmnl
Ist 'Car' in Ihrem Design erlaubt? ('MyCarModel' erbt von' CarModel') –
@markmnl, tut mir leid, meine Schuld in der Aufschreibung vorgenommen Änderungen wie oben –