Das könnte ein bisschen ein Anti-Muster sein, aber es ist möglich, dass eine Eigenschaft in einer C # -Klasse mehrere Werte akzeptiert?
Nehmen wir zum Beispiel an, ich hätte eine Eigenschaft Public int, und ich möchte immer, dass sie ein int zurückgibt, aber ich möchte die Eigenschaft durch Zuweisung einer Dezimalzahl, einer Ganzzahl oder eines anderen Datentyps festlegen können. Also meine Frage ist, ob es für Eigenschaften möglich ist, mehrere Werte zu akzeptieren?
Ich denke, was Sie fragen wollen, ist: Wie funktioniert implizit und < a href="http://msdn.microsoft.com/en-us/library/xhbhezf4.aspx"> explizite Casting-Arbeit für int
und decimal
?
Sie fragen nach implizitem Casting, das automatisch ein Objekt in einen anderen definierten Typ umwandelt. Sie können dies nicht für int
und decimal
durchführen, da sie bereits im Framework definiert sind und Sie den Umfang von decimal
nicht reduzieren können, indem Sie ihn in ein int
umwandeln. Aber wenn Sie das als Beispiel für tatsächliche Objekte verwenden, die Sie erstellt haben, können Sie das implizite verwenden Link oben, um mehr darüber zu erfahren, wie das funktioniert und wie man es implementiert.
Aber Sie können immer die Konvertierungsmethode verwenden, um sie in den richtigen Typ zu konvertieren;
%Vor%Bearbeiten: Diese Methode kann nicht verwendet werden, da das op spezifisch an Eigenschaften gebunden ist.
Ich glaube nicht, dass dies mit der Robustheit möglich ist, die Sie beschreiben. In diesem Fall wäre es wahrscheinlich besser, wenn Sie eine überladene Methode verwenden (Polymorphismus).
Dies wird normalerweise als Setter (oder Mutator) bezeichnet. Sie können die Methode überladen, um mehrere verschiedene Arten von Parametern zu akzeptieren. Jeder wird anders durchführen, wenn Sie es wünschen. Die Art, wie ich sie eingerichtet habe, ist vielleicht nicht syntaktisch korrekt, aber das ist die allgemeine Idee, nach der Sie suchen, glaube ich.
%Vor%Es scheint so, als müssten Sie den Typ zur Laufzeit ermitteln. Sie könnten die Eigenschaft ein Objekt akzeptieren lassen, den Typ bestimmen und Ihre Aktion ausführen. Sie müssten natürlich Ausnahmen für Dinge einwerfen, die Sie nicht erwarten. Wie du sagst, wahrscheinlich nicht das Beste, aber möglich. :)
Nein. Eine Eigenschaft hat einen einzelnen Wert. Sie können ihm alles zuweisen, das einer Variablen desselben Typs zugewiesen werden kann.
Tags und Links .net c# properties anti-patterns