为什么System.IO.Path COM只包含静态成员和字段时可见?
[ComVisibleAttribute(true)]
public static class Path
Run Code Online (Sandbox Code Playgroud)
我的印象是,不能调用COM对象的静态成员函数(此外,该类需要一个Path
没有的默认构造函数).
另请注意SO用户的尖锐评论:
值得注意的是,它没有Guid属性,这很可能意味着每次编译时都会重新生成类id.
为什么PATH
COM可见,可以用它做什么?
当然,这是一个错误.这是一个很好的公司,mscorlib的许多其他类都有同样的问题.例如注册表,目录,文件,缓冲区,环境,可空,监视器,超时.但不一致,BitConverter,Console,Convert,GC,Math等都正确省略了该属性.
对于mscorlib中的许多类,该属性非常重要,自定义CLR主机和脚本语言依赖于它.看起来应用该属性的Microsoft程序员只是在自动驾驶上运行.这个错误是无关紧要的,Tlbexp知道如何处理它.coclass获取[noncreatable]属性,因此客户端程序无法创建该类的实例.并且自动生成的接口为空.所以这种类型根本不可用,你也不会意外地使用它.
如果你真的想从COM客户端程序使用System.IO.Path,那么你必须为它编写一个[ComVisible]包装类.当然,非静态,您编写的每个方法都可以直接委托给其中一个Path方法.你喜欢coclass上的[appobject]属性,所以它在支持该属性的客户端程序中静态运行,遗憾的是.NET没有它的属性.
归档时间: |
|
查看次数: |
91 次 |
最近记录: |