我有一個WinForm,它通過ObjectForScripting與WebBrowserControl交互。我的WinForm的基類不ComVisible,我不能或不會改變它。因爲有一個NonComVisibleBaseClass我創建了一個接口並將其設置爲ComVisible(true)並設置了FormAttribute [ClassInterface(ClassInterfaceType.None)]。接口中的方法可以由JavaScript調用。它的作品完美:ObjectForScripting與多個接口不工作
//Make the class visible for COM so we can set the ObjectForScripting
//Specify ClassInterfaceType.None to use the ComVisible Interface
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public partial class GeekBrowser : GeekBasePage, IMapControlInteractable
...
public class GeekBasePage : System.Windows.Forms.Form
...
[ComVisible(true)]
public interface IMapControlInteractable
但現在我的問題。該界面包含多個功能。我想爲單獨的任務分組分隔接口。所以我想要一個包含Logging函數和DataAccess函數接口等的接口。
因此,這將是這樣的:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public partial class GeekBrowser : GeekBasePage, IDataAccess, ILogging
...
public class GeekBasePage : System.Windows.Forms.Form
...
[ComVisible(true)]
public interface IDataAccess
...
[ComVisible(true)]
public interface ILogging
但是,當我做第二個接口(ILogging)的這個功能是不是從JavaScript訪問。如果我切換接口的順序,則不能訪問IDataAccess功能。
因此,似乎只有第一個接口的方法可以在Javascript中訪問。
我可以做些什麼來使每個接口的每個功能都可訪問?再次,使BaseClass ComVisible和刪除ClassInterface屬性將會起作用,但不是一種選擇。
在此先感謝!