ComVisibleAttribute クラス

定義

個々のマネージド型またはマネージド メンバーから COM への、またはアセンブリ内のすべての型から COM へのアクセシビリティを制御します。Controls accessibility of an individual managed type or member, or of all types within an assembly, to COM.

public ref class ComVisibleAttribute sealed : Attribute
[System.Runtime.InteropServices.ComVisible(true)]
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
public sealed class ComVisibleAttribute : Attribute
type ComVisibleAttribute = class
    inherit Attribute
Public NotInheritable Class ComVisibleAttribute
Inherits Attribute
継承
ComVisibleAttribute
属性

次の例は、クラスの COM の可視性を制御して、そのメンバーが非表示になるようにする方法を示しています。The following example shows how you can control the visibility to COM of a class so that its members are invisible. を on ComVisibleAttribute false MyMethod に設定MyPropertyするSampleClassfalse (Visual Basic の例では)、およびでは、継承によって、誤ってメンバーが COM に公開されるのを防ぐことができます。 MyClassBy setting ComVisibleAttribute to false on MyClass(SampleClass in the Visual Basic example), and false on MyMethod and MyProperty, you can avoid inadvertently exposing the members to COM through inheritance.

using namespace System::Runtime::InteropServices;

[ComVisible(false)]
ref class MyClass
{
private:
   int myProperty;

public:
   MyClass()
   {
      
      //Insert code here.
   }


   [ComVisible(false)]
   int MyMethod( String^ param )
   {
      return 0;
   }

   bool MyOtherMethod()
   {
      return true;
   }


   property int MyProperty 
   {

      [ComVisible(false)]
      int get()
      {
         return myProperty;
      }

   }

};

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;
      }
   }
}
Imports System.Runtime.InteropServices

<ComVisible(False)> _
Class SampleClass
    
    Public Sub New()
        'Insert code here.
    End Sub
    
    <ComVisible(False)> _
    Public Function MyMethod(param As String) As Integer
        Return 0
    End Function    
    
    Public Function MyOtherMethod() As Boolean
        Return True
    End Function
    
    <ComVisible(False)> _
    Public ReadOnly Property MyProperty() As Integer
        Get
            Return MyProperty
        End Get
    End Property
    
End Class

注釈

この属性は、アセンブリ、インターフェイス、クラス、構造体、デリゲート、列挙体、フィールド、メソッド、またはプロパティに適用できます。You can apply this attribute to assemblies, interfaces, classes, structures, delegates, enumerations, fields, methods, or properties.

既定値はtrueで、マネージ型が COM から参照可能であることを示します。The default is true, which indicates that the managed type is visible to COM. この属性は、パブリックマネージアセンブリと型を参照できるようにするためには必要ありません。既定では、これらの値は COM から参照できます。This attribute is not needed to make public managed assemblies and types visible; they are visible to COM by default. 表示publicできるのは型のみです。Only public types can be made visible. 属性を使用して、COM に対しinternalprotected他のまたは型を参照可能にしたり、非表示型のメンバーを表示したりすることはできません。The attribute cannot be used to make an otherwise internal or protected type visible to COM or to make members of a nonvisible type visible.

アセンブリの属性をfalseに設定すると、 publicアセンブリ内のすべての型が非表示になります。Setting the attribute to false on the assembly hides all public types within the assembly. 個々の型をに設定することによって、アセンブリ内のtrue型を選択的に表示できます。You can selectively make types within the assembly visible by setting the individual types to true. 特定の型のfalse属性をに設定すると、その型とそのメンバーは非表示になります。Setting the attribute to false on a specific type hides that type and its members. ただし、型が非表示になっている場合、型のメンバーを表示することはできません。However, you cannot make members of a type visible if the type is invisible. 型の属性をfalseに設定すると、その型がタイプライブラリにエクスポートされるのを防ぐことができます。クラスは登録QueryInterfaceされません。インターフェイスはアンマネージ呼び出しに応答しません。Setting the attribute to false on a type prevents that type from being exported to a type library; classes are not registered; interfaces are never responsive to unmanaged QueryInterface calls.

クラスとそのメンバーをに明示的にfalse設定しない限り、継承されたクラスは、元のクラスで非表示になっている COM 基底クラスのメンバーに公開できます。Unless you explicitly set a class and its members to false, inherited classes can expose to COM base class members that are invisible in the original class. たとえば、classa をにfalse設定し、そのメンバーに属性を適用しない場合、クラスとそのメンバーは COM に対して非表示になります。For example, if you set ClassA to false and do not apply the attribute to its members, the class and its members are invisible to COM. ただし、Classb から ClassB を派生させ、ClassB を COM にエクスポートすると、Classb メンバーは ClassB の基底クラスのメンバーとして表示されるようになります。However, if you derive ClassB from ClassA and export ClassB to COM, ClassA members become visible base class members of ClassB.

エクスポートプロセスの詳細については、「アセンブリからタイプライブラリへの変換の概要」を参照してください。For a detailed description of the export process, see Assembly to Type Library Conversion Summary.

コンストラクター

ComVisibleAttribute(Boolean)

ComVisibleAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the ComVisibleAttribute class.

プロパティ

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)
Value

COM 型が参照可能かどうかを示す値を取得します。Gets a value that indicates whether the COM type is visible.

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)

適用対象

こちらもご覧ください