收集属性属性值

时间:2013-03-16 15:02:46

标签: c# code-generation envdte texttemplate

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

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

[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的属性,我想生成以下列表:

  • GetFoosByCategory
  • GetFoosByClass
  • GetFoosByClassAndLot
  • GetFoosByLot

任何人都可以帮我吗?

0 个答案:

没有答案