2011-11-16 15 views

Respuesta

3

Como solución se puede implementar sus propias compatible con CLS ModuleExportAttribute que utiliza una lista separada por comas en lugar de una matriz de cadenas:

[MetadataAttribute] 
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] 
public class StringListModuleExportAttribute : ExportAttribute, IModuleExport 
{ 
    public StringListModuleExportAttribute(Type moduleType) 
     : base(typeof(IModule)) 
    { 
     ModuleName = moduleType.Name; 
     ModuleType = moduleType; 
    } 

    public string ModuleName { get; private set; } 
    public Type ModuleType { get; private set; } 
    public InitializationMode InitializationMode { get; private set; } 
    public string[] DependsOnModuleNames 
    { 
     get 
     { 
      if (string.IsNullOrEmpty(DependsOnModuleNameList)) 
       return new string[0]; 
      return DependsOnModuleNameList.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries); 
     } 
    } 

    public string DependsOnModuleNameList { get; set; } 
} 

Uso:

[StringListModuleExport(typeof(ModuleA), DependsOnModuleNameList = "ModuleB,ModuleC")] 
public class ModuleA : IModule 
{ 
    public void Initialize() 
    { 
     Debug.WriteLine("ModuleA init"); 
    } 
} 
+0

Aunque esto funciona, realmente esperaba para una solución sin tener que extender desde la clase existente. Pero, tal vez esa sea la única forma (aparte de suprimir la advertencia). –

Cuestiones relacionadas