在interop.sourcesafetypelib.dll中
的interop.sourcesafetypelib命名空间
有一个VssDataBase接口
竟然可以VssDatabase db=new VssDataBase()
太奇怪了
谁能解释解释啊!!????

解决方案 »

  1.   

    你确认 VssDataBase 是定义为 interface ??
      

  2.   

    是啊
    你可以看看
    在vss中的ssapi.dll中
      

  3.   

    当然
    而且msdn中介绍的也是借口
      

  4.   

    怎么可能,微软的命名规则很严格,interface一定是I打头的
      

  5.   

    你可以测试一下,看看实例化的对象的类型是什么
     Console.Write(db.GetType());
      

  6.   

    接口不可以实例化的...
    using System.Runtime.InteropServices;namespace Microsoft.VisualStudio.SourceSafe.Interop
    {
        [Guid("2A0DE0EE-2E9F-11D0-9236-00AA00A1EB95")]
        [CoClass(typeof(VSSDatabaseClass))]
        public interface VSSDatabase : IVSSDatabase
        {
        }
    }
    但LZ的写法可以..应该是CoClass特性的原因吧..
    实现上实例化为VSSDatabaseClass类测试代码:
        Microsoft.VisualStudio.SourceSafe.Interop.VSSDatabase db = new VSSDatabase();
                Console.WriteLine(db.ToString());
    输出:
    Microsoft.VisualStudio.SourceSafe.Interop.VSSDatabaseClass
      

  7.   

    haha 
    过度了`
    呵呵`
      

  8.   

    基础知识不扎实!!!
    接口不能“直接”实例化。--msdn  //没说不能“间接”“间接”实例化接口   接口 实例 = new 实现接口的类()
      

  9.   

    少见啊,
    但接口不能“直接”实例化。--msdn  //没说不能“间接”“间接”实例化接口   接口 实例 = new 实现接口的类()长见识