none
能实例化接口?? RRS feed

  • 问题

  • 再写一个程序的时候 

    private void create()
            {
                Feature i = new Feature();
               
            }//这里为止没报错

    然后转到定义  ,惊讶的发现

    [Guid("FCB01CB4-9F0B-11D0-BEC7-00805F7C4268")]
        [CoClass(typeof(FeatureClass_2))]
        public interface Feature : IRow               //Featrue是接口?????
        {
        }

    这是怎么回事??

    2014年1月20日 16:19

答案

  • c#语言规范 17.5 交互操作的属性 :仅适用于 C# 的 Microsoft .NET 实现。

    17.5.1 与 COM 和 Win32 组件的交互操作:属性可在 System.Runtime.InteropServices 命名空间

    也就是说这个命名空间的属性都是微软提供的非标准行为,不用遵守7.5.10.1定的new表达式类型规则的。




    Visual C++ MVP

    • 已标记为答案 yaoly 2014年1月21日 3:11
    2014年1月20日 23:38
    版主
  • 那请问在这里能不能把它当做一个类来看待,或者说当做一个类来使用呢?

    这里有一个标记

     [CoClass(typeof(FeatureClass_2))]

    通过这个标记,其实你在new Feature()时CLR是知道真正要new的是FeatureClass_2。

    你可以看看一下链接了解一下COM调用的机制:

    http://msdn.microsoft.com/en-us/library/aa645712(v=vs.71).aspx


    • 已标记为答案 yaoly 2014年1月21日 3:11
    2014年1月21日 2:46

全部回复

  • c#语言规范 17.5 交互操作的属性 :仅适用于 C# 的 Microsoft .NET 实现。

    17.5.1 与 COM 和 Win32 组件的交互操作:属性可在 System.Runtime.InteropServices 命名空间

    也就是说这个命名空间的属性都是微软提供的非标准行为,不用遵守7.5.10.1定的new表达式类型规则的。




    Visual C++ MVP

    • 已标记为答案 yaoly 2014年1月21日 3:11
    2014年1月20日 23:38
    版主
  • 那请问在这里能不能把它当做一个类来看待,或者说当做一个类来使用呢?
    2014年1月21日 2:29
  • 那请问在这里能不能把它当做一个类来看待,或者说当做一个类来使用呢?

    这里有一个标记

     [CoClass(typeof(FeatureClass_2))]

    通过这个标记,其实你在new Feature()时CLR是知道真正要new的是FeatureClass_2。

    你可以看看一下链接了解一下COM调用的机制:

    http://msdn.microsoft.com/en-us/library/aa645712(v=vs.71).aspx


    • 已标记为答案 yaoly 2014年1月21日 3:11
    2014年1月21日 2:46
  • 噢~明白,谢谢
    2014年1月21日 3:11