What does the C# CoClass attribute do?
我在我们使用的第三方库中发现了类似以下的代码。
1 2 3 4
| [CoClass (typeof(BlahClass ))]
public interface Blah : IBlah
{
} |
这到底在做什么?MSDN文档并没有充分阐明我要遵循的主题。
- CoClass是一个COM概念。如果你不懂COM,那么你就不懂CoClass。
- 关于这个问题的讨论可能会有所帮助:stackoverflow.com/questions/1093536/…
- C编译器如何检测COM类型的可能副本?
它声明接口Blah将由特定的类实现。这意味着您可以方便地说new Blah,运行时将知道要创建什么对象——这在接口中通常是不可能的。
如果您查看为blahclass生成的声明,它可能会有一个与之关联的Guid,可以用来创建COM对象的实例。
- 好吧,根据我在周围代码中看到的情况,这是有意义的。谢谢!除了COM之外,与仅仅实现接口相比,这个方法还有什么优势吗?
- 我需要你在罗伯特戈兰的评论的答案。实现此类或声明接口是否足够?
- @mohammadgoudarzi属性[CoClass(typeof(BlahClass))]提到类BlahClass,因此类必须存在于某个地方。它必须实现接口Blah。在从COM类型库生成的互操作程序集中,EDCOX1(1)实际上是COM对象(可能在C++、VB6、Delphi或其他完全实现的……中实现)。