Classe ComVisibleAttribute
Aggiornamento: novembre 2007
Determina l'accesso facilitato a COM di un singolo tipo o membro gestito o di tutti i tipi all'interno di un assembly.
Assembly: mscorlib (in mscorlib.dll)
[AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited = false)] [ComVisibleAttribute(true)] public sealed class ComVisibleAttribute : Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited = false) */ /** @attribute ComVisibleAttribute(true) */ public final class ComVisibleAttribute extends Attribute
public final class ComVisibleAttribute extends Attribute
È possibile applicare questo attributo ad assembly, classi, interfacce, strutture, enumerazioni, delegati, campi, metodi o proprietà.
Il valore predefinito è true, che indica che il tipo gestito è visibile a COM. L'attributo non è necessario per rendere visibili i tipi e gli assembly pubblici gestiti, in quanto sono visibili a COM per impostazione predefinita. Solo i tipi public possono essere resi visibili. L'attributo non può essere utilizzato per rendere visibile a COM un tipo che altrimenti sarebbe internal o protected, né per rendere visibili membri di un tipo non visibile.
Impostando l'attributo su false nell'assembly vengono nascosti tutti i tipi public all'interno dell'assembly. È possibile rendere visibili i tipi nell'assembly in modo selettivo impostando i singoli tipi su true . Se si imposta l'attributo su false in un tipo specifico, tale tipo e i relativi membri vengono nascosti. Non è, tuttavia, possibile rendere visibili i membri di un tipo se il tipo è invisibile. Se si imposta l'attributo su false di un tipo, si impedisce che tale tipo venga esportato in una libreria dei tipi; le classi non sono registrate; le interfacce sono rispondono mai a chiamate QueryInterface non gestite.
A meno che non si imposti in modo esplicito una classe e i suoi membri su false, le classi ereditate possono esporre a COM i membri della classe base che sono invisibili nella classe originale. Se si imposta, ad esempio, ClassA su false e non si applica l'attributo ai relativi membri, la classe e i suoi membri saranno invisibili a COM. Se tuttavia si deriva ClassB da ClassA e si esporta ClassB a COM, i membri di ClassA diventano membri visibili della classe base di ClassB.
Per una descrizione dettagliata del processo di esportazione, vedere Riepilogo della conversione da assembly a libreria dei tipi .
Nell'esempio che segue viene descritto come controllare la visibilità a COM di una classe, in modo che i relativi membri siano invisibili. Impostando ComVisibleAttribute su false in MyClass e false su MyMethod e MyProperty, è possibile evitare in modo involontario l'esposizione dei membri a COM attraverso l'ereditarietà.
using System.Runtime.InteropServices; [ComVisible(false)] class MyClass { public MyClass() { //Insert code here. } [ComVisible(false)] public int MyMethod(string param) { return 0; } public bool MyOtherMethod() { return true; } [ComVisible(false)] public int MyProperty { get { return MyProperty; } } }
import System.Runtime.InteropServices.*;
/** @attribute ComVisible(false)
*/
class MyClass
{
public MyClass()
{
//Insert code here.
} //MyClass
/** @attribute ComVisible(false)
*/
public int MyMethod(String param)
{
return 0;
} //MyMethod
public boolean MyOtherMethod()
{
return true;
} //MyOtherMethod
/** @attribute ComVisible(false)
*/
/** @property
*/
public int get_MyProperty()
{
return get_MyProperty();
}//get_MyProperty
} //MyClass
import System.Runtime.InteropServices; ComVisible(false) class MyClass { public function MyClass() { //Insert code here. } ComVisible(false) public function MyMethod(param : String) : int { return 0; } public function MyOtherMethod() : boolean { return true; } ComVisible(false) public function get MyProperty() : int { return MyProperty; } }
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC, Xbox 360
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.