ExportAttribute Класс
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, что типом, свойством, полем или методом предоставляется определенный экспорт.
public ref class ExportAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)]
public class ExportAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Property, AllowMultiple=true, Inherited=false)>]
type ExportAttribute = class
inherit Attribute
Public Class ExportAttribute
Inherits Attribute
- Наследование
- Производный
- Атрибуты
В следующем примере показаны три класса, ExportAttributeукрашенные , и три класса импорта, которые соответствуют им.
//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
В модели программирования атрибут объявляет, ExportAttribute что часть экспортирует или предоставляет контейнеру композиции объект, который выполняет определенный контракт. Во время композиции части с импортом, имеющие соответствующие контракты, будут иметь эти зависимости, заполненные экспортируемым объектом.
может ExportAttribute декорировать либо весь класс, либо свойство, поле или метод класса. Если весь класс декорирован, экземпляр класса является экспортируемым объектом. Если член класса декорирован, экспортируемый объект будет значением декорированного элемента.
Соответствие контракта определяется главным образом именем контракта и типом контракта. Для получения дополнительной информации см. ImportAttribute.
Export |
Инициализирует новый экземпляр класса ExportAttribute, экспортирующего тип или член, помеченный данным атрибутом, в рамках имени контракта по умолчанию. |
Export |
Инициализирует новый экземпляр класса ExportAttribute, экспортирующего тип или член, помеченный данным атрибутом, в рамках заданного имени контракта. |
Export |
Инициализирует новый экземпляр класса ExportAttribute, экспортирующего указанный тип в рамках заданного имени контракта. |
Export |
Инициализирует новый экземпляр класса ExportAttribute, экспортирующего тип или член, помеченный данным атрибутом, в рамках имени контракта, производного от заданного типа. |
Contract |
Получает имя контракта, используемое для экспорта типа или члена, помеченного данным атрибутом. |
Contract |
Получает тип контракта, экспортируемый членом, к которому прикреплен данный атрибут. |
Type |
В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute. (Унаследовано от Attribute) |
Equals(Object) |
Возвращает значение, показывающее, равен ли экземпляр указанному объекту. (Унаследовано от Attribute) |
Get |
Возвращает хэш-код данного экземпляра. (Унаследовано от Attribute) |
Get |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Is |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту. (Унаследовано от Attribute) |
Memberwise |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
To |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
_Attribute. |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
_Attribute. |
Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса. (Унаследовано от Attribute) |
_Attribute. |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
_Attribute. |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Attribute) |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: