ImportAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- Ö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) |