Ich möchte vorwegnehmen, dass ich Dynamic Objects nicht sehr oft benutzt habe und erst kürzlich auf dieses Problem gestoßen bin. Ich habe ein bestimmtes Szenario, das ich unter erkläre, aber ich fragte mich, was genau die Vorteile der Implementierung eines dynamischen Objekts im Vergleich zum Erstellen einer Klasse für dieses Objekt waren.Welchen Vorteil bietet die Verwendung eines dynamischen Objekts beim Erstellen einer Klasse dieses Objekts?
Ich habe eine Methode, die ein dynamisches Objekt als Parameter verwendet. Aus Gründen der Länge werde ich nicht viel Code schreiben gerade genug, um den Punkt zu vermitteln:
public static Tax GetEmployeeTax(string Id, Employee employee, dynamic inputObject)
{
var temp = new Employee();
//use the dynamic object properties
return temp;
}
In diesem Fall wird inputObject
Eigenschaften haben, die die Mitarbeiter Steuern, ohne direkt an den Arbeitnehmer-Klasse im Zusammenhang identifizieren helfen wird. In erster Linie habe ich die inputObject
die folgenden Eigenschaften gegeben:
dynamic dynamicEmployeeTax = new ExpandoObject();
dynamicEmployeeTax.FederalTaxInfo = "Some information";
dynamicEmployeeTax.StateTaxInfo = "Some other information";
Gibt es irgendwelche Vorteile zu machen diese seine eigene Klasse im Vergleich zu einem dynamischen Objekt mit? Gibt es Vorteile auf die eine oder andere Art?
Normalerweise würden Sie sich für 'dynamic' entscheiden, weil Sie * brauchen * zu. Gibt es einen Grund, warum Sie keinen Typ für "inputObject" erstellen können? – haim770
Nun, wenn Sie eine Klasse für sie erstellen, erhalten Sie starke Tipp- und Kompilierungszeit vs Laufzeitfehler. – juharr
Vereinbart mit @ haim770, Wenn Sie Objekte aus einer externen Quelle verwenden, in denen Sie verschiedene Objekte mit einer gemeinsamen Eigenschaft akzeptieren können, die keine Schnittstelle implementieren oder an einer Vererbungsbeziehung teilnehmen und nicht geändert werden können, dann Sie verwenden 'dynamic' als Ihren letzten Ausweg, nicht als Ihre erste Wahl. (Alternativ, wenn Sie nur zu faul sind, um einen Kurs zu machen - aber letztendlich wird das wahrscheinlich zurückkommen und Sie beißen). –