ComVisibleAttribute 클래스
COM에 대한 어셈블리 내의 관리되는 개별 형식이나 멤버 또는 모든 형식의 액세스 가능성을 제어합니다.
네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
<AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Enum Or AttributeTargets.Method Or AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Interface Or AttributeTargets.Delegate, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class ComVisibleAttribute
Inherits Attribute
‘사용 방법
Dim instance As ComVisibleAttribute
[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
[AttributeUsageAttribute(AttributeTargets::Assembly|AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Enum|AttributeTargets::Method|AttributeTargets::Property|AttributeTargets::Field|AttributeTargets::Interface|AttributeTargets::Delegate, Inherited=false)]
[ComVisibleAttribute(true)]
public ref class ComVisibleAttribute sealed : public 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
AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface|AttributeTargets.Delegate, Inherited=false)
ComVisibleAttribute(true)
public final class ComVisibleAttribute extends Attribute
설명
이 특성은 어셈블리, 인터페이스, 클래스, 구조체, 대리자, 열거형, 필드, 메서드 또는 속성에 적용할 수 있습니다.
기본값은 true이며, 관리되는 형식이 COM에 표시된다는 것을 나타냅니다. 이 특성을 사용할 경우 관리되는 모든 공용 어셈블리 및 형식을 표시할 필요가 없습니다. 기본적으로 이러한 어셈블리 및 형식은 COM에 표시됩니다. public 형식만 표시할 수 있습니다. 이 특성을 사용하여 internal 또는 protected 형식을 COM에 표시하거나 표시되지 않는 형식의 멤버를 표시되게 할 수 없습니다.
어셈블리에서 이 특성을 false로 설정하면 어셈블리 내의 모든 public 형식이 숨겨집니다. 어셈블리 내의 개별 형식을 true로 설정하여 특정 형식만 표시할 수 있습니다. 특정 형식에서 이 특성을 false로 설정하면 해당 형식 및 그 멤버가 숨겨집니다. 그러나 표시되지 않는 형식의 멤버를 표시할 수는 없습니다. 형식에 대해 이 특성을 false로 설정하면 해당 형식이 형식 라이브러리로 내보내지지 않습니다. 또한 클래스가 등록되지 않고, 관리되지 않는 QueryInterface 호출에 대해 인터페이스가 응답하지 않습니다.
클래스와 그 멤버를 명시적으로 false로 설정한 경우가 아니면 상속된 클래스는 원본 클래스에서는 표시되지 않는 COM 기본 클래스의 멤버에 노출시킬 수 있습니다. 예를 들어, ClassA를 false로 설정하고 이 클래스의 멤버에 이 특성을 적용하지 않은 경우에는 클래스와 해당 멤버가 COM에 표시되지 않습니다. 그러나 ClassA에서 ClassB를 파생시킨 다음 ClassB를 COM에 내보낸 경우에는 ClassA의 멤버가 ClassB의 표시되는 기본 클래스 멤버입니다.
내보내기 프로세스에 대한 자세한 내용은 어셈블리를 형식 라이브러리로 변환 요약을 참조하십시오.
예제
다음 예제에서는 클래스의 멤버가 표시되지 않도록 COM에 대한 클래스의 표시 유형을 제어하는 방법을 보여 줍니다. ComVisibleAttribute를 MyClass
에 대해 false로, MyMethod
및 MyProperty
에 대해 false로 각각 설정하면, 실수로 상속을 통해 COM에 멤버를 노출하는 것을 방지할 수 있습니다.
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
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;
}
}
}
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;
}
}
};
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;
}
}
상속 계층 구조
System.Object
System.Attribute
System.Runtime.InteropServices.ComVisibleAttribute
스레드로부터의 안전성
이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
플랫폼
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
.NET Compact Framework
2.0, 1.0에서 지원
참고 항목
참조
ComVisibleAttribute 멤버
System.Runtime.InteropServices 네임스페이스