У меня есть Dictionary<string,K>
, где K представляет собой тип, который загружается через отражение, я не могу назвать К.Вызов метода с использованием динамическим с выводимым параметром
К сожалению, я не могу понять, как я предполагается использовать метод TryGetValue
. Я попробовал пару разных вещей, и все они приводят к исключениям. Что я должен делать?
dynamic dict = GetDictThroughMagic();
dynamic d;
bool hasValue = dict.TryGetValue("name",out d);
bool hasValue = dict.TryGetValue("name",d);
Я могу написать более подробный if(dict.Contains("name")) d=dict["name"]
Но я бы предпочел, если я мог бы написать более краткий TryGetValue подход.
Обновлено включает фактическое исключение:
Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The
best overloaded method match for 'System.Collections.Generic.Dictionary<string,K>
.TryGetValue(string, out K)' has some invalid arguments
at CallSite.Target(Closure , CallSite , Object , String , Object&)
Если вы не знаете, что такое 'K', почему бы просто не использовать' IDictionary 'вместо этого? Это позволит вам хранить объекты типа 'K' просто отлично, и ваш метод в вопросе будет работать. –
mellamokb