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");
}
}
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). –