J'ai la classe suivante:C# - Silverlight - CustomAttribute avec 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;
}
}
La classe compile très bien, mais quand je décore ma propriété avec elle:
[ModuleActivationButton(Regions.Tabs)]
public IModuleActivationButton ModuleActivationButton
{
get { return new ModuleActivationButton() as IModuleActivationButton; }
set { ModuleActivationButton = value; }
}
public enum Regions
{
Content,
Tabs
}
Le compilateur recrache:
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
, la langue, et le compilateur, s'il vous plaît –
Ok, je l'ai supprimé ma réponse parce que je ne suis pas convaincu ça t'aide et je n'en sais pas assez sur le MEF pour aller beaucoup plus loin. Mais vous pourriez vouloir inclure un peu plus de détails sur ce que vous essayez de faire; En regardant l'exemple d'ExportAttribute sur MSDN, je pense que vous l'utilisez peut-être mal. Il semble avoir des exportations sur les classes et des importations sur les propriétés. – pdr
Selon: http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.exportattribute.aspx vous pouvez exporter sur les classes et les propriétés et les méthodes et les champs. – cmaduro