如果这有点令人费解,我会提前道歉。
我有一个像这样的属性类:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class RepositoryCollectionMethodAttribute : Attribute
{
public string MethodName { get; set; }
public RepositoryCollectionMethodAttribute(string methodName)
{
MethodName = methodName;
}
}
我正在使用EnvDTE
遍历我的类域,收集代码生成类。查找使用RepositoryCollectionMethod
装饰一个或多个属性的类。
这一部分相对简单,因此对于每个具有一些这些属性的课程,我现在有一个IEnumerable<CodeProperty>
我呼叫properties
。
现在我被卡住了。由于这些EnvDTE对象的性质(似乎厌恶强类型和良好的文档/示例)我无法弄清楚如何从属性集合中提取MethodName
属性值的独特列表,至少其中一个将RepositoryCollectionMethod
装饰它。
换句话说,如果我有一个类'Foo',就像这样:
public class Foo
{
public Guid FooId { get; set; }
[RepositoryCollectionMethod("GetFoosByCategory")]
public string Category { get; set; }
[RepositoryCollectionMethod("GetFoosByClass")]
[RepositoryCollectionMethod("GetFoosByClassAndLot")]
public string Class { get; set; }
[RepositoryCollectionMethod("GetFoosByLot")]
[RepositoryCollectionMethod("GetFoosByClassAndLot")]
public string Lot { get; set; }
}
...给定IEnumerable<CodeProperty>
个Foo
的属性,我想生成以下列表:
任何人都可以帮我吗?