내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

ImportAttribute 클래스

CompositionContainer 개체에서 속성, 필드 또는 매개 변수 값을 제공하도록 지정합니다.

System.Object
  System.Attribute
    System.ComponentModel.Composition.ImportAttribute

네임스페이스:  System.ComponentModel.Composition
어셈블리:  System.ComponentModel.Composition(System.ComponentModel.Composition.dll)

[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter, AllowMultiple = false, 
	Inherited = false)]
public class ImportAttribute : Attribute

ImportAttribute 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드이식 가능한 클래스 라이브러리에서 지원ImportAttribute()기본 계약 이름을 가진 내보내기를 가져와 ImportAttribute 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원ImportAttribute(String)지정된 계약 이름을 가진 내보내기를 가져와 ImportAttribute 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원ImportAttribute(Type)지정된 형식에서 파생된 계약 이름을 가진 내보내기를 가져와 ImportAttribute 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원ImportAttribute(String, Type)지정된 계약 이름과 형식을 가진 내보내기를 가져와 ImportAttribute 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 속성이식 가능한 클래스 라이브러리에서 지원AllowDefault컨테이너에 해당 계약 이름을 가진 내보내기가 없는 경우 속성, 필드 또는 매개 변수가 해당 형식의 기본값으로 설정되는지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원AllowRecomposition컨테이너에서 일치하는 계약이 있는 내보내기가 변경된 경우 속성이나 필드를 재작성해야 하는지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원ContractName가져올 내보내기의 계약 이름을 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원ContractType가져올 내보내기의 형식을 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원RequiredCreationPolicy이 가져오기를 충족시키는 데 사용되는 내보내기에 대한 특정 CreationPolicy가 필요함을 나타내는 값을 가져오거나 설정합니다.
Public 속성Source이 가져오기를 충족할 수 있는 범위를 지정하는 값을 가져오거나 설정합니다.
Public 속성TypeId파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (Attribute에서 상속됨)
위쪽

  이름설명
Public 메서드이식 가능한 클래스 라이브러리에서 지원Equals인프라입니다. 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Protected 메서드이식 가능한 클래스 라이브러리에서 지원Finalize 개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원GetHashCode이 인스턴스의 해시 코드를 반환합니다. (Attribute에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드IsDefaultAttribute파생 클래스에서 재정의된 경우 이 인스턴스의 값이 파생 클래스의 기본값인지 여부를 나타냅니다. (Attribute에서 상속됨)
Public 메서드Match파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Protected 메서드이식 가능한 클래스 라이브러리에서 지원MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽

  이름설명
명시적 인터페이스 구현Private 메서드_Attribute.GetIDsOfNames이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드_Attribute.GetTypeInfo인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드_Attribute.GetTypeInfoCount개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드_Attribute.Invoke개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. (Attribute에서 상속됨)
위쪽

특성을 사용하는 프로그래밍 모델에서 ImportAttribute는 해당 파트의 가져오기 또는 종속성을 선언하는 데 사용됩니다. 속성, 필드 또는 메서드를 데코레이팅할 수 있습니다. 컴퍼지션 동안 부분의 가져오기는 해당 CompositionContainer 개체에 제공되는 내보내기를 사용하여 부분이 속해 있는 CompositionContainer 개체에 의해 채워집니다.

가져오기가 지정된 내보내기와 일치하는지 여부는 주로 계약 이름과 계약 형식을 비교하여 결정됩니다. 일반적으로 코드에서 가져오기 특성을 사용할 경우 둘 다 지정할 필요가 없으며 데코레이팅된 멤버 형식에서 자동으로 유추됩니다. 가져오기가 다른 형식의 내보내기와 일치해야 하는 경우(예를 들어, 데코레이팅된 멤버 형식의 하위 클래스 또는 해당 멤버에서 구현한 인터페이스) 계약 형식은 명시적으로 지정해야 합니다. 계약 이름은 예를 들어 같은 형식의 여러 계약을 구별할 경우 명시적으로도 지정할 수 있지만 보통 메타데이터를 통해 이렇게 하는 것이 더 좋습니다. 메타데이터에 대한 자세한 내용은 PartMetadataAttribute을 참조하십시오.

다음 예제에서는 ImportAttribute로 데코레이팅된 멤버가 있는 세 개의 클래스와 이와 일치하는 세 개의 내보내기를 보여 줍니다.


//Default export infers type and contract name from the
//exported type.  This is the preferred method.
[Export]
public class MyExport1
{
    public String data = "Test Data 1.";
}

public class MyImporter1
{
    [Import]
    public MyExport1 importedMember { get; set; }
}

public interface MyInterface
{

}

//Specifying the contract type may be important if
//you want to export a type other then the base type,
//such as an interface.
[Export(typeof(MyInterface))]
public class MyExport2 : MyInterface
{
    public String data = "Test Data 2.";
}

public class MyImporter2
{
    //The import must match the contract type!
    [Import(typeof(MyInterface))]
    public MyExport2 importedMember { get; set; }
}

//Specifying a contract name should only be 
//needed in rare caes. Usually, using metadata
//is a better approach.
[Export("MyContractName", typeof(MyInterface))]
public class MyExport3 : MyInterface
{
    public String data = "Test Data 3.";
}

public class MyImporter3
{
    //Both contract name and type must match!
    [Import("MyContractName", typeof(MyInterface))]
    public MyExport3 importedMember { get; set; }
}

class Program
{      

    static void Main(string[] args)
    {
        AggregateCatalog catalog = new AggregateCatalog();
        catalog.Catalogs.Add(new AssemblyCatalog(typeof(MyExport1).Assembly));
        CompositionContainer _container = new CompositionContainer(catalog);
        MyImporter1 test1 = new MyImporter1();
        MyImporter2 test2 = new MyImporter2();
        MyImporter3 test3 = new MyImporter3();
        _container.SatisfyImportsOnce(test1);
        _container.SatisfyImportsOnce(test2);
        _container.SatisfyImportsOnce(test3);
        Console.WriteLine(test1.importedMember.data);
        Console.WriteLine(test2.importedMember.data);
        Console.WriteLine(test3.importedMember.data);
        Console.ReadLine();

    }
}


.NET Framework

4.5.2, 4.5.1, 4.5, 4에서 지원

.NET Framework Client Profile

4에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

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

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft