Csharp/C#教程:C#组件事件?分享


C#组件事件?

我正在尝试编写一个C#组件,它将公开事件。 该组件将由非托管C ++应用程序导入。 根据一些教程我已经提出了这个代码(对于C#方面):

namespace COMTest { [ComVisible(true), Guid("02271CDF-BDB9-4cfe-B65B-2FA58FF1F64B"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface ITestEvents { void OnTest(); } [ComVisible(true), Guid("87BA4D3A-868E-4233-A324-30035154F8A4")] public interface ITest { void RaiseTest(); } // End of ITest [ComVisible(true), Guid("410CD174-8933-4f8c-A799-8EE82AF4A9F2"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(ITestEvents))] public class TestImplimentation : ITest { public TestImplimentation() { } public void RaiseTest() { if (null != OnTest) OnTest(); } public delegate void Test (); //No need to expose this delegate public event Test OnTest; } } 

现在我的c ++代码很简单:

 #import "COMTest.tlb" named_guids raw_interfaces_only 

这会生成一个tlh文件。 这个tlh文件包含除我的事件(OnTest)之外的所有内容。 我做错了什么?

COM事件接收器对于不熟悉的人来说是非常邪恶的。

步骤基本上是

消息是在interop命名空间中有一些属性可以帮助你(大多数情况下)自动执行此操作( ComSourceInterfacesAttribute )这里有一个很好的例子。

上述就是C#学习教程:C#组件事件?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/957412.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐