日期:2014-05-17  浏览次数:21005 次

如果在 interface 上定义 [ClassInterface(ClassInterfaceType.AutoDual)] 生成 DLL
Hi,

在 C# 里面新建了一个工程,这个工程是 C#.Net 生成 DLL ,这个DLL 里面的类全部是准备提供给 VB6 调用的,
之前已经成功生成 DLL 给 VB6 调用,现在这个 DLL 新加了一个 interface 接口.

以下是在 interace 的前面加上 GUID 与 ClassInterface 定义。


namespace Test
{
    [GuidAttribute("11111111-1111-1111-1111-111111111111")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public interface TestInterfaceClass
    {
        void Method1();
    }
}



但是,在编绎的时候,提示以下错误:

Error 1 Attribute 'ClassInterface' is not valid on this declaration type. It is only valid on 'assembly, class' declarations.

请问,如何处理,才可以让这个 interface 在生成 DLL 后可以被 VB6 识别调用到??

注: 如果不在 Class 上加上 [ClassInterface(ClassInterfaceType.AutoDual)] 的话,在生成 DLL 后, VB6 的工程里面是看不到相应的 Class 的,但是,现在是 interface 接口而不是 Class, 这种情况不知如何处理。

请指点,谢谢。

------解决方案--------------------
class定义成public,加上ComVisible=True就可以看到。
------解决方案--------------------
用Guid工具生成一个Guid放进去试试
------解决方案--------------------
引用:
Quote: 引用:

class定义成public,加上ComVisible=True就可以看到。


我这个是 interface 不是 Class, 请再看一下。


我知道啊。