我目前正在使用托管代码中的COM对象,并使用新的动态类型。这在一些领域运作良好,但可能成为其他领域的问题。在C中包装COM对象/动态类型#
我想,我怎么能得到两全其美的,动态型(后期绑定)与支持的灵活性,比方说,一个RCW(早期绑定)
不知怎的,包裹在动态类型一个更易于管理的结构。我想知道是否有一个首选的方法(如果它甚至是一个好主意)或我应该考虑的事情。
两个基本观点我想出迄今如下:
首先,创建一个静态类,允许我这样称呼的动态类型的方法,在管理方式。
public static class ComObjectWrapper
{
public static void SomeMethod(dynamic comObject, int x)
{
comObject.someMethod(x);
}
public static bool GetSomeProp(dynamic comObject)
{
comObject.getSomeProp();
}
public static void SetSomeProp(dynamic comObject, bool foo)
{
comObject.setSomeProp(foo);
}
}
其次,创建使用COM对象,那么它的所有成员映射到托管属性,方法构造一类等
public class ComObjectWrapper
{
private dynamic comObject = null;
public ComObjectWrapper(dynamic comObject)
{
this.comObject = comObject;
}
public void SomeMethod(int x)
{
comObject.someMethod(x);
}
public bool SomeProp
{
get
{
return comObject.getSomeProp();
}
set
{
comObject.setSomeProp(value);
}
}
}
还有没有其他的方法可以解决这个?我错过了一些愚蠢的东西!?
如果你有选择所有使用* dynamic *的RCW都没有意义。几乎所有的COM服务器都支持它,导入类型库。 – 2011-02-23 20:33:18
对不起,我完全不同意 - 例如;如果不在我的控制范围内的类型库被更新,那么基于它的RCW的任何应用程序都会中断。其次,所有类型库的版本呢,我只能针对一个版本。本质上,我想迟迟绑定,以避免版本依赖于我无法控制的库。 – Fraser 2011-02-23 21:18:46