与默认和公共类COM曝光有什么关系?MSDN有这篇关于[ComVisible]属性的文章。我不太确定设置[ComVisible(true)]时会发生什么。MSDN说默认值为true,这意味着托管类型对COM可见。使公共管理的程序集和类型可见不需要此属性;默认情况下,它们对COM可见。只有公共类型是可见的。所以他们说公共类型在默认情况下是COM可见的。但是他们也说通过设置[ComVisible(true)]只能看到公共类型。这没有意义:如果公共类型默认可见,则设置[ComVisible(true)]会使公共类型可见?如果它们已经可见,它们将如何变得更加可见?也许我的理解不正确。如果有人能对上述陈述有所了解,我将不胜感激。没有意义,默认情况下公共类型是可见的,那么如何将ComVisible属性设置为true[ComVisible(true)]以使公共类型可见。默认情况下它们是可见的,因为ComVisibleAttribute的默认值为true。将该属性显式设置为true不会改变任何内容,它只会让您的意图更加清晰。这是您找到的文档的第一行:默认值为true,这意味着托管类型对COM可见。使公共管理的程序集和类型可见不需要此属性;默认情况下,它们对COM可见。只有公共类型是可见的。此属性不能用于使内部或受保护类型对COM可见,或使不可见类型的成员可见。基本上,您可以将其设置为[ComVisibleAttribute(true)],如果您自己不这样做,编译器总是会在您的代码中添加[ComVisibleAttribute(true)]。您需要设置此属性的唯一原因是防止公共类型变为COM可见(在这种情况下,您将其设置为false)。默认值确保其可见性。显然,COM不能也不会看到非公共类型(例如,private和protected)。此属性对具有此类可访问性的类型没有影响。诀窍是您还可以在程序集级别(在AssemblyInfo.cs中)添加此属性。如果你指定[assembly:ComVisible(true)](或者不在程序集级别,默认情况下具有相同的效果),那么默认情况下所有公共类和接口及其公共方法都将变为COM可见。你也可以在程序集级别设置[assembly:ComVisible(false)],那么默认所有公共实体都和它们[ComVisible(false)]有相同的效果,所以你只能将这些类/接口/方法标记为COM-visible([ComVisible(true)])你真正需要的。当您在这里有很多公共实体时,这有助于您不暴露太多。如果没有这种机制,您必须将[ComVisible(false)]设置为您不想公开的每个类/接口/方法。使用[assembly:ComVisible(false)]允许您只显示您需要的内容。并且您只能将公共实体公开给COM(默认或显式)——具有更严格可见性的实体不能公开给COM。以上就是C#学习教程:COM暴露default和publicclass有什么关系?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
