3

これが少し複雑になる場合は、事前にお詫び申し上げます。

次のような属性クラスがあります。

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class RepositoryCollectionMethodAttribute : Attribute
{
    public string MethodName { get; set; }
    public RepositoryCollectionMethodAttribute(string methodName)
    {
        MethodName = methodName;
    }
}

を使用してクラス ドメインをトラバースし、EnvDTEコード生成用のクラスを収集しています。で 1 つまたは複数のプロパティを装飾するクラスを見つけるRepositoryCollectionMethod

この部分は比較的簡単だったので、これらのプロパティの一部を装飾したクラスごとに、 IEnumerable<CodeProperty>I 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