Ich versuche, eine Schnittstelle zu implementieren, die eine einzelne Eigenschaft erfordert, aber ich interessiere mich nicht explizit für welchen Typ es ist. Zum Beispiel:C#: Implementieren Sie eine Schnittstelle mit einer Eigenschaft eines beliebigen Typs
public interface IName
{
dynamic Name {get; set;}
}
Dann, wenn ich eine Klasse Ich mag würde die Iname Schnittstelle mit einer Art von Zeichenfolge implementieren:
public class Person : IName
{
public string Name {get; set;}
}
Dies wirft jedoch einen Fehler. Ich weiß, ich könnte die Schnittstelle Iname mache ein generisches Argument nehmen IName<T>
aber das zwingt mich eine Reihe von überladenen Funktionen zu erstellen, die IName<string>
nehmen, IName<NameObj>
, IName<etc>
stattdessen innerhalb einer einzigen Funktion des Gießens.
Wie kann ich verlangen, dass eine Klasse eine Eigenschaft enthält? Machen
Muss der Rückgabetyp wirklich "irgendein Objekt" sein? Wie wird der konsumierende Code aussehen und wie wird er mit einem * beliebigen * Objekt, das zurückgegeben wird, umgehen? Die einzigen Dinge, die Sie wirklich wissen werden, sind Methoden auf "Object", und wenn Sie diese verwenden möchten, können Sie auch den Rückgabetyp "Object" verwenden. Ich denke, wenn das ein Wegwerf- oder interner Code ist, den Sie nur sehr wenig wiederverwenden wollen, dann ist es vielleicht in Ordnung. Darüber hinaus schlage ich vor, das Typsystem zu nutzen. –