3

如果这有点令人费解,我提前道歉。

我有一个像这样的属性类:

[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

谁能帮我这个?

4

0 回答 0