我目前正在使用託管代碼中的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