У меня есть динамическое значение (реализация IDynamicMetaObjectProvider), для которого я хотел бы вызвать методы и свойства.
Примеры, которые я нашел до сих пор при вызове членов для динамических значений, используют типы из Microsoft.CSharp.dll, например,
IDynamicMetaObjectProvider x = GetDynamicValue();
CallSite<Func<CallSite, object, object, object>> site = CallSite<Func<CallSite, object, object, object>>.Create(
Binder.SetMember(
Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.None,
"Foo",
null,
new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) }
)
);
site.Target(site, x, 42);
Я хочу иметь возможность вызывать члены IDynamicMetaObjectProvider без использования Microsoft.CSharp.dll. Обратите внимание, что я не говорю об использовании динамического ключевого слова C # для чего-либо, связанного с C #, а непосредственно об использовании IDynamicMetaObjectProvider.
Также обратите внимание, что использование Reflection не будет работать. Reflection обходит динамическое связывание вызовов и просто выполняет Reflection для базового типа. Мне нужна техника, которая работает с любой реализацией IDynamicMetaObjectProvider.