2010-12-15 21 views
0

我有幾個已導入到.Net4類庫的WCF服務。創建代理時,將聲明爲DataContracts的多個枚舉器導入到代理中。後來我通過COM Interop公開了幾個用作ActiveX庫的過程,並且使用導入的枚舉器作爲這些過程的參數。
在我的類庫的程序中,我可以用[ComVisible(true)]公開,以便它們可以通過COM調用。然而,有枚舉作爲參數,當我regasm.exe註冊的方法,我得到的錯誤:使從WCF導入的枚舉在COM Interop中可見

Type library exporter warning processing 'xxxxxx.Method(pEnumerator),yyyyyy'. Warning: Non COM visible value type 'yyyyyy.zzzzzzz.enEnumerator' is being referenced either from the type currently being exported or from one of its base types. 

我知道這是因爲普查員不與標記有ComVisible特性暴露,但如果我把必要的參數,因爲它們在代理中,所以無論何時我刷新代理,它們都將被覆蓋。有沒有辦法解決?
我可以在類庫中創建自己的枚舉器,使用ComVisible公開它們,並執行switch以將導入的枚舉器與我創建的枚舉器相匹配。但我想避免這種情況。
Tks幫助

回答

1

創建一個在客戶端和服務之間共享的公共庫。在該程序集中添加您的枚舉器並用ComVisible標記它們。

從VS創建代理時,會出現一個複選框(默認選中),允許在當前或引用程序集中重用類型。選中此項後,代理將使用共享程序集中的類型,而不是生成新的類型。