如果这有点令人费解,我提前道歉。
我有一个像这样的属性类:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class RepositoryCollectionMethodAttribute : Attribute
{
public string MethodName { get; set; }
public RepositoryCollectionMethodAttribute(string methodName)
{
MethodName = methodName;
}
}
我正在使用 遍历我的类域EnvDTE
,收集用于代码生成的类。找到一个用 . 装饰一个或多个属性的类RepositoryCollectionMethod
。
这部分相对容易,所以对于每个装饰了这些属性的类,我现在都有一个IIEnumerable<CodeProperty>
call 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>
ofFoo
的属性,我想生成以下列表:
- GetFoosByCategory
- GetFoosByClass
- GetFoosByClassAndLot
- GetFoosByLot
谁能帮我这个?