Надо узнать есть ли свойство у объекта COM.
Через IDispatch можно, например, из JScript получить свойство MyProperty у объекта так:
MyObject.GetProperty("MyProperty").
Reference на COM-объект добавлен в проект, и автоматически сгенерированы обёртка.
В .NET для позднего связывания, как я понял, используется рефлексия. Но как этим воспользоваться?
Сейчас для работы с объектом используется такой код:
object o = Doc.GetItem(i);
IteropMyLibrary.MyObject MyO = o as IteropMyLibrary.MyObject;
if (MyO.Property != null)
//...
P.S. Может кто-нибудь посоветует книжку, где хорошо описана рефлексия.
Здравствуйте, x1, Вы писали:
x1>Сейчас для работы с объектом используется такой код:
x1>object o = Doc.GetItem(i);
x1>IteropMyLibrary.MyObject MyO = o as IteropMyLibrary.MyObject;
x1>if (MyO.Property != null)
x1> //...
А что именно здесь не устраивает?
Здравствуйте, _FRED_, Вы писали:
_FR>x1>>object o = Doc.GetItem(i);
x1>>IteropMyLibrary.MyObject MyO = o as IteropMyLibrary.MyObject;
x1>>if (MyO.Property != null)
x1>> //...
_FR>
_FR>А что именно здесь не устраивает?
В этом коде меня всё устараивает, но в реальном проекте есть несколько (около 10)
объектов разных типов, имеющих некоторое свойство, чтобы не писать каждый раз
IteropMyLibrary.MyObject1 MyO1 = o as IteropMyLibrary.MyObject1;
if (MyO1 != null)
MyO1.MyPoperty;
else {
IteropMyLibrary.MyObject2 MyO2 = o as IteropMyLibrary.MyObject2;
if (MyO2 != null)
MyO2.MyPoperty;
else{
// и так далее для MyObject3, MyObject4, MyObject5
}
}
Хотелось бы что-нибудь вроде:
if (o.GetProperty("MyProperty")