Chciałbym dynamicznie dodawać właściwości do ExpandoObject w czasie wykonywania. Na przykład, aby dodać wywołanie właściwości string NewProp, chciałbym napisać coś takiego
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
Czy to jest możliwe?
c#
c#-4.0
dynamic
expandoobject
Craig
źródło
źródło
Odpowiedzi:
Alternatywnie:
źródło
Error 53 Cannot convert type 'System.Dynamic.ExpandoObject' to 'System.Collections.Generic.IDictionary<string,string>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
IDictionary<string, object>
nieIDictionary<string, string>
.IDictionary
takiego nie używaszdynamic
jako typu zmiennej.Jak wyjaśniono tutaj przez Filipa - http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
Możesz także dodać metodę w czasie wykonywania.
źródło
Oto przykładowa klasa pomocnicza, która konwertuje obiekt i zwraca Expando ze wszystkimi publicznymi właściwościami danego obiektu.
Stosowanie:
źródło
myślę, że to dodaje nową właściwość w pożądanym typie bez konieczności ustawiania pierwotnej wartości, na przykład gdy właściwość zdefiniowana w definicji klasy
źródło