dynamic вместо рефлексии

Интерфейс dynamic не особо сложный, пожалуй за определенное время можно аккуратно написать проброс рефлексии через интерфейс dynamic

Можно ли использовать nuget пакет, или какую то либу что бы не городить вот такое

public  DynReflect : System.Dynamic.DynamicObject {
  private object aObj; // Обьект назначения
  private Type   aType;// Тип обьекта назначения

  public override bool TryGetMember(GetMemberBinder binder, out object result)  
    {
        var prop = aType.GetProperty(binder.Name);
        if (prop == null) {
            result = null; 
            return false;
            }
        result = prop.GetValue(aObj);
        return true;
    }

 }

Может уже есть готовое решение?

В данном случае есть COM-библиотека сторонняя, написана вообще непонятно на чем. Разработчик библиотеки неудосужился сделать портирование под с#.

Приходится писать нечто вроде

Type ComType= Type.GetTypeFromProgID("ScriptControl") // Подключаем либу
var obj =ComType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[0]) // Вызов конструктора
Comtype.InvokeMember("Init", BindingFlags.InvokeMethod, null, obj, new object[]{}); Вызов метода

Все COM-методы известны, но вызвать их получается только через рефлексию, вот и подумал через dymaic было бы удобнее написать нечто вроде

var a = DynReflect.CreateCOM("Класс");
a.Init();
a.BeginSession();
a.PrintComment("Hello");
a.EndSession();

Так гораздо читабельнее бы было.


Ответы (0 шт):