У меня есть следующий класс:C# - Silverlight - CustomAttribute с Enum
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class ModuleActivationButtonAttribute : ExportAttribute
{
public Enum TargetRegion { get; set; }
public ModuleActivationButtonAttribute(Enum targetRegion) : base(typeof(IModuleActivationButton))
{
TargetRegion = targetRegion;
}
}
Класс компилируется нормально, но когда я украсить свою собственность с ним:
[ModuleActivationButton(Regions.Tabs)]
public IModuleActivationButton ModuleActivationButton
{
get { return new ModuleActivationButton() as IModuleActivationButton; }
set { ModuleActivationButton = value; }
}
public enum Regions
{
Content,
Tabs
}
Компилятор выплевывает:
Error 1 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type C:\...\CompanyX.Modules.Home\HomeModule.cs 28 33 CompanyX.Modules.Home
платформы, языка и компилятора, пожалуйста –
Ok, я удалил свой ответ, потому что я не уверен, это помогает вам, и я не знаю достаточно о MEF, чтобы идти гораздо дальше. Но вы можете включить немного более подробную информацию о том, что вы пытаетесь сделать; глядя на пример ExportAttribute на MSDN, я думаю, вы можете использовать его неправильно. Кажется, что у него есть Экспорт по классам и Импорт по свойствам. – pdr
В соответствии с: http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.exportattribute.aspx вы можете экспортировать классы и свойства и методы и поля. – cmaduro