ImportAttribute Sınıf

Tanım

Bir özellik, alan veya parametre değerinin CompositionContainer.object tarafından sağlanması gerektiğini belirtir.

public ref class ImportAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
public class ImportAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)>]
type ImportAttribute = class
    inherit Attribute
Public Class ImportAttribute
Inherits Attribute
Devralma
ImportAttribute
Öznitelikler

Örnekler

Aşağıdaki örnekte, üyeleri ile ImportAttributesüslenmiş üç sınıf ve bunlarla eşleşen üç dışarı aktarma gösterilmektedir.

//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();
    }
}
'Default export infers type and contract name from the
'exported type.  This is the preferred method.
<Export()>
Public Class MyExport1
    Public ReadOnly Property data As String
        Get
            Return "Test Data 1."
        End Get
    End Property
End Class

Public Class MyImporter1

    <Import()>
    Public Property ImportedMember As MyExport1

End Class

Public Interface MyInterface

End Interface

'Specifying the contract type may be important if
'you want to export a type other then the base type,
'such as an interface.
<Export(GetType(MyInterface))>
Public Class MyExport2
    Implements MyInterface
    Public ReadOnly Property data As String
        Get
            Return "Test Data 2."
        End Get
    End Property
End Class

Public Class MyImporter2
    'The import must match the contract type!
    <Import(GetType(MyInterface))>
    Public Property ImportedMember As MyExport2
End Class

'Specifying a contract name should only be 
'needed in rare caes. Usually, using metadata
'is a better approach.
<Export("MyContractName", GetType(MyInterface))>
Public Class MyExport3
    Implements MyInterface
    Public ReadOnly Property data As String
        Get
            Return "Test Data 3."
        End Get
    End Property
End Class

Public Class MyImporter3
    'Both contract name and type must match!
    <Import("MyContractName", GetType(MyInterface))>
    Public Property ImportedMember As MyExport3
End Class



Sub Main()
    Dim catalog As AggregateCatalog = New AggregateCatalog()
    catalog.Catalogs.Add(New AssemblyCatalog(GetType(MyExport1).Assembly))
    Dim container As CompositionContainer = New CompositionContainer(catalog)
    Dim test1 As MyImporter1 = New MyImporter1()
    Dim test2 As MyImporter2 = New MyImporter2()
    Dim test3 As MyImporter3 = 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()
End Sub

Açıklamalar

Öznitelikli Programlama Modeli'nde, ImportAttribute belirli bir bölümün içeri aktarmalarını veya bağımlılıklarını bildirmek için kullanılır. Bir özelliği, alanı veya yöntemi süsleyebilir. Oluşturma sırasında, bir parçanın CompositionContainer içeri aktarmaları, ilgili nesneye sağlanan CompositionContainer dışarı aktarmalar kullanılarak o parçanın ait olduğu nesne tarafından doldurulur.

Bir içeri aktarmanın belirli bir dışarı aktarmayla eşleşip eşleşmediği öncelikli olarak sözleşme adı ve sözleşme türü karşılaştırılarak belirlenir. Normalde, kodda içeri aktarma özniteliğini kullanırken bunlardan herhangi birini belirtmeniz gerekmez ve bunlar, süslü üyenin türünden otomatik olarak çıkarılır. İçeri aktarma işleminin farklı türde bir dışarı aktarmayla (örneğin, süslü üye türünün alt sınıfı veya bu üye tarafından uygulanan bir arabirim) eşleşmesi gerekiyorsa, sözleşme türü açıkça belirtilmelidir. Sözleşme adı, örneğin aynı türdeki birden çok sözleşmeyi ayırt etmek için açıkça belirtilebilir, ancak bunu meta veriler aracılığıyla yapmak genellikle daha iyidir. Meta veriler hakkında daha fazla bilgi için bkz PartMetadataAttribute. .

Oluşturucular

ImportAttribute()

Sınıfın ImportAttribute yeni bir örneğini başlatır ve dışarı aktarmayı varsayılan sözleşme adıyla içeri aktarır.

ImportAttribute(String)

Belirtilen sözleşme adıyla dışarı aktarmayı ImportAttribute içeri aktararak sınıfının yeni bir örneğini başlatır.

ImportAttribute(String, Type)

Belirtilen sözleşme adı ve türüyle dışarı aktarmayı içeri aktararak sınıfının yeni bir örneğini ImportAttribute başlatır.

ImportAttribute(Type)

Belirtilen türden türetilen sözleşme adıyla dışarı aktarmayı içeri aktararak sınıfının yeni bir örneğini ImportAttribute başlatır.

Özellikler

AllowDefault

Kapsayıcıda sözleşme adına sahip bir dışarı aktarma olmadığında özelliğin, alanın veya parametrenin türünün varsayılan değerine ayarlanıp ayarlanmayacağını belirten bir değeri alır veya ayarlar.

AllowRecomposition

Kapsayıcıda eşleşen bir sözleşmeyle dışarı aktarmalar değiştiğinde özelliğin veya alanın yeniden derlenip derlenmeyeceğini belirten bir değer alır veya ayarlar.

ContractName

İçeri aktaracak dışarı aktarmanın sözleşme adını alır.

ContractType

İçeri aktaracak dışarı aktarmanın türünü alır.

RequiredCreationPolicy

İçeri aktarıcının bu içeri aktarmayı karşılamak için kullanılan dışarı aktarmalar için belirli CreationPolicy bir değer gerektirdiğini belirten bir değer alır veya ayarlar.

Source

Bu içeri aktarmanın karşılanabileceği kapsamları belirten bir değer alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

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

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.