Отражение объектов COM-взаимодействия

Попытка создать преобразователь для объекта Microsoft Office в POCO и обнаружила это

// doesn't work
// returns an empty array where o is a RCW on an office object
foreach(var pi in  o.GetType().GetProperties() ) 
    tgt.SetValue(rc, pi.GetValue(o, null));

, поэтому пришлось прибегнуть к этому

foreach(var field in tgt.GetFields() ){
    var pv = o.InvokeMember(field.Name, System.Reflection.BindingFlags.GetProperty, null, o, null);
    i.SetValue(rc, pv);
}

, который пока работает, но интересно почему RCW.GetProperties()здесь не работает?

7
задан bluish 7 February 2014 в 12:47
поделиться