2
我已經創建了屬於MEF的自定義屬性,我希望定義與該類相關的id列表,以便我可以查詢它們。將列表添加到系統屬性
而且該類必須包含在自身定義,這是很重要的,這就是爲什麼我想過使用:
[SignalSystemData("ServiceIds", new List<int>(){1})]
我應如何處理?
我的搜索的實現如下:
var c = new Class1();
var v = c.EditorSystemList;
foreach (var lazy in v.Where(x=>x.Metadata.LongName=="ServiceIds"))
{
if (lazy.Metadata.ServiceId.Contains(serviceIdToCall))
{
var v2 = lazy.Value;
// v2 is the instance of MyEditorSystem
Console.WriteLine(serviceIdToCall.ToString() + " found");
}else
{
Console.WriteLine(serviceIdToCall.ToString() + " not found");
}
}
我與定義導出類應該是這樣的:
[Export(typeof(IEditorSystem))]
[SignalSystemData("ServiceIds", new List<int>{1})]
public class MyEditorSystem1 : IEditorSystem
{
void test()
{
Console.WriteLine("ServiceID : 1");
}
}
public interface IEditorSystem
{
}
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class SignalSystemDataAttribute : ExportAttribute
{
public SignalSystemDataAttribute(string longName, List<int> serviceId)
: base(typeof (IEditorSystem))
{
LongName = longName;
ServiceId = serviceId;
}
public string LongName { get; set; }
public List<int> ServiceId { get; set; }
}
public interface IEditorSystemMetadata
{
string LongName { get; }
List<int> ServiceId { get; }
}
這不會飛。 [屬性值必須是(編譯時)常量。](http://msdn.microsoft.com/en-us/library/yd21828z.aspx) –
@ Christian.K這就是我所知道的,所以我試圖找到方式會怎樣,而不是訴諸於使用昏迷分離的字符串。 – cpoDesign
啊,對不起。你可能想在你的問題中指出這一點。我的答案也是如此。 –