다음을 통해 공유


ProgIdAttribute 클래스

사용자가 클래스의 ProgID를 지정할 수 있게 합니다.

네임스페이스: System.Runtime.InteropServices
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<AttributeUsageAttribute(AttributeTargets.Class, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class ProgIdAttribute
    Inherits Attribute
‘사용 방법
Dim instance As ProgIdAttribute
[AttributeUsageAttribute(AttributeTargets.Class, Inherited=false)] 
[ComVisibleAttribute(true)] 
public sealed class ProgIdAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class, Inherited=false)] 
[ComVisibleAttribute(true)] 
public ref class ProgIdAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Class, Inherited=false) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class ProgIdAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Class, Inherited=false) 
ComVisibleAttribute(true) 
public final class ProgIdAttribute extends Attribute

설명

이 특성을 클래스에 적용할 수 있습니다.

형식 이름과 네임스페이스를 결합하여 클래스에 대한 ProgID가 자동으로 생성됩니다. 그러나 ProgID는 39자로 제한되어 있고 마침표 이외의 다른 문장 부호를 포함할 수 없으므로 잘못된 ProgID가 생성될 수 있습니다. 이런 경우, ProgIdAttribute를 사용하여 ProgId를 수동으로 클래스에 할당할 수 있습니다.

예제

다음 예제에서는 클래스에 ProgIdAttribute를 적용하는 방법을 보여 줍니다. 그런 다음에는 응용 프로그램에서 MyClass의 모든 특성을 가져와서 ProgIdAttributeValue 속성을 출력합니다.

   <ClassInterface(ClassInterfaceType.AutoDispatch), ProgId("InteropSample.MyClass")>  _
   Public Class [MyClass]
      
      Public Sub New()
      End Sub 'New
   End Class '[MyClass]

   Class TestApplication
      
      Public Shared Sub Main()
         Try
            Dim attributes As AttributeCollection
            attributes = TypeDescriptor.GetAttributes(GetType([MyClass]))
            Dim progIdAttributeObj As ProgIdAttribute = CType(attributes(GetType(ProgIdAttribute)), ProgIdAttribute)
            Console.WriteLine(("ProgIdAttribute's value is set to : " + progIdAttributeObj.Value))
         Catch e As Exception
            Console.WriteLine(("Exception : " + e.Message.ToString()))
         End Try
      End Sub 'Main
   End Class 'TestApplication
End Namespace 'InteropSample 
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ProgId("InteropSample.MyClass")]
public class MyClass
{
    public MyClass() {}
}

class TestApplication
{      
   public static void Main()
   {
      try
      {
         AttributeCollection attributes;
         attributes = TypeDescriptor.GetAttributes(typeof(MyClass));
         ProgIdAttribute progIdAttributeObj = (ProgIdAttribute)attributes[typeof(ProgIdAttribute)];
         Console.WriteLine("ProgIdAttribute's value is set to : " + progIdAttributeObj.Value);
      }         
      catch(Exception e)
      {
         Console.WriteLine("Exception : " + e.Message);
      }
   }
}
[ClassInterface(ClassInterfaceType::AutoDispatch)]
[ProgId("InteropSample.MyClass")]
public ref class MyClass
{
public:
   MyClass(){}

};

int main()
{
   try
   {
      AttributeCollection^ attributes;
      attributes = TypeDescriptor::GetAttributes( MyClass::typeid );
      ProgIdAttribute^ progIdAttributeObj = dynamic_cast<ProgIdAttribute^>(attributes[ ProgIdAttribute::typeid ]);
      Console::WriteLine( "ProgIdAttribute's value is set to : {0}", progIdAttributeObj->Value );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }
}
/** @attribute ClassInterface(ClassInterfaceType.AutoDispatch)
 */
/** @attribute ProgId("InteropSample.MyClass")
 */
public class MyClass
{
    public MyClass()
    {
    } //MyClass
} //MyClass

class TestApplication
{
    public static void main(String[] args)
    {
        try {
            AttributeCollection attributes;
            attributes = TypeDescriptor.GetAttributes(MyClass.class.ToType());
            ProgIdAttribute progIdAttributeObj = (ProgIdAttribute)
                (attributes.get_Item(ProgIdAttribute.class.ToType()));
            Console.WriteLine("ProgIdAttribute's value is set to : " 
                + progIdAttributeObj.get_Value());
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception : " + e.get_Message());
        }
    } //main
} //TestApplication

상속 계층 구조

System.Object
   System.Attribute
    System.Runtime.InteropServices.ProgIdAttribute

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, 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에서 지원

참고 항목

참조

ProgIdAttribute 멤버
System.Runtime.InteropServices 네임스페이스