Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
dynamic dobj = new DO();
dobj.SomeMethod();
'DynamicObjectAbuse.DO' does not contain a definition for 'NonExistentMethod'
Shell.ShellForm.Dyn does not contain a definition for 'SomeMethod'
Error 1 Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported
Error 2 One or more types required to compile a dynamic expression cannot be found. Are you missing references to 'Microsoft.CSharp.dll
and System.Core.dll'?
Если коротко, то вариантов использования очень много, хотя безусловно “каноническим” программированием это безобразие не назвать. Уверен, что отсутсвие статических проверок может при неграмотном использовании наплодить кучу недетектируемых багов, поэтому мой вам совет – будьте осторожны!
ExpandoObject – это вообще лебединая песня.Фразеологизм лебединая песня (песнь) обязан своим происхождением народному поверью, по которому лебедь поет в своей жизни один раз – перед смертью. Отсюда и установившееся его значение: «Последнее, обычно наиболее значительное, произведение кого-либо; последнее проявление таланта, способностей и т. п.» («Фразеологический словарь русского языка»).
Expression<T>
то вообще никак, если это выражение то можно сериализовать граф. Сам я конечно не пробовал :) xe.Elements(«People»).Element(«Dmitri»).Attributes(«Name»).Value; // WTF?
xe.XPathSelectElement("./People//Dmitri[@Name]");
xe.people.dmitri.name
xe.Elements(«People»).Element(«Dmitri»).Attributes(«Name»).Value;
Знакомимся с DynamicObject