mam obiektu instance
dla którychGet par klucz-wartość słownika, nie znając jego typ
instance.GetType().GetGenericTypeDefinition() == typeof(Dictionary<,>)
jest prawdą. Moje pytanie brzmi: jak wyodrębnić pary klucz-wartość z tego obiektu bez znajomości ich rodzajów ogólnych? Chciałbym uzyskać coś w rodzaju KeyValuePair<object, object>[]
. Zauważ, że znam również typy ogólne, których słownik używa w czasie wykonywania (ale nie podczas kompilacji). Zakładam, że jakiś rodzaj refleksji jest wymagany?
KONTYNUACJA: Czy istnieje ogólny mechanizm przekonwertować object
do SomeClass<>
(jeśli wiem, że jest to właściwy typ, oczywiście), a więc z niego skorzystać, biorąc pod uwagę, że realizacja tej klasy nie ma wpływu typ ogólnych argumentów?
Albo nietypowy interfejs 'IDictionary'. – SLaks
To dobry punkt. Szukam odpowiedzi specjalnie dla 'Dictionary <,>' ale chciałbym wiedzieć, czy istnieje sposób, w jaki mogę dynamicznie rzutować dowolny obiekt, który wymaga ogólnych argumentów, aby móc go używać. – nickolayratchev
"ToList" IDictionary'a zwraca listę KeyValuePairs: 'var keyValuePairList = instance.ToList();'. Czy tego właśnie szukasz (przed kontynuacją)? Czy może czegoś brakuje? –