2013-11-01 63 views
0

如果我有一个COM对象(Activator.CreateInstance实例化)暴露其它对象作为属性,像C#反思 - COM对象

Object1.Object2.Object3

我怎样才能得到Object3如果我只有一个实例Object1使用反射?

回答

3

如何获取Object3如果我只有一个使用反射Object1的实例?

这是不可能的。您需要首先通过反射获取Object2实例,然后才能访问Object3。如果你有其他一些对象参照Object3,那可能是可能的。

顺便说一句,如果您使用.NET 4.0或更高版本,您可能会发现dynamic关键字可能为处理COM对象和反射时节省很多麻烦。看看这里:http://msdn.microsoft.com/en-us/library/vstudio/dd264736.aspx

+0

是啊,我一直在阅读关于'动态'晚绑定的奇迹在4.0,但不幸的是,我在.NET 3.5 ... :( – ferc

+0

哦,对不起,在这里, 。顺便说一句,你可以使用VB.NET,它与C#没有相同的严格类型。在VB.NET中处理COM对象比在C#中处理(在动态关键字之前)要容易得多。你可以把这个逻辑封装成一个用VB.NET编写的.NET程序集,你的代码可以访问其他部分,如果你不能这样做,那么恐怕你必须为核心思考做好准备。 –