【问题标题】:Problems with COM object C#COM 对象 C# 的问题
【发布时间】:2010-07-08 18:25:18
【问题描述】:

我必须将 dll 调整为 COM 对象(类库中的一个主类)。 此 dll 引用了其他 dll。 当我为 COM 使用 C# 属性并注册 dll 时,我无法使用此类,注册在注册表中注册了很多混乱(我的类库中很少有公共类,我不想公开它们作为 com)。 这个问题让我发疯,有谁知道 C# 中的 com 接口是否强制更改引用 dll(当我创建一个简单的类并且交互时它工作得很好,这就是为什么我认为它与引用 dll 有关)? 请帮帮我!!!

先谢谢了!!!

【问题讨论】:

    标签: com c#-3.0


    【解决方案1】:

    在该程序集中使用属性。如果您不希望公共类作为 COM 接口可见

    [ComVisible(false)]
    

    然后有一些选项如何使它对 COM 可见 其中之一: 制作一个带有属性的接口

     [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [Guid("new generated GUID")]
    public interface ISample
    {
     void DoSomthing();
    }
    

    然后实现这个接口

    [Guid("new generated GUID")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(ISample))]
    [ProgId("YourModule.YourClass")]
    [ComVisible(true)]
    public class YourClass :  ISample
    

    【讨论】:

    • 但是我想作为com接口可见的类(我将他设置为true),在注册表中根本不存在!您确定引用的 dll 不需要更改吗?
    • 好吧,我有一个接口(ISample)和静态类工厂(静态类 SampleFactory),它没有实现 ISample 接口,只有创建函数返回 ISample 实例。我想将这些类公开为 com 可见。可能吗?实际上,这是行不通的:(
    猜你喜欢
    • 2012-01-17
    • 2011-06-07
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多