1

私はこれに対するクレイジーなlinqの答えがあることを望んでいます、それはあるべきであるように感じます

現在のコード:

MapHierarchy().Case<Folder>(f => new { FolderId = f.Id, 
                                        f.Name,
                                        Type = 1 })
                      .Case<RootFolder>(f => new { f.RootName,
                                                    Type = 2 })
                      .ToTable("Folder");

別の方法:

void AddAnotherFolder(something)
{
   something.Case<RootFolder>(f => new { f.RootName, Type = 2 })
}

私ができるようにしたいのは、そのメソッドをMapHierarchy文字列に渡すことです-それは可能ですか?

何かのようなもの...

MapHierarchy().Case<Folder>(f => new { FolderId = f.Id, 
                                        f.Name,
                                        Type = 1 })
                      .Case<RootFolder>(f => new { f.RootName,
                                                    Type = 2 })
                      .AddAnotherFolder(this)
                      .ToTable("Folder");

linqの質問のように感じますが、できれば非常にクールです

4

1 に答える 1

1

のメソッドシグネチャを見てくださいCase<T>。特定のタイプのwhere句を使用して、静的クラスで同様の拡張メソッドを作成できるはずです。次のようになります。

public static class ExtensionClass
{
    public static HierarchyEntityMap<TEntity> AddAnotherFolder<TEntity>(this HierarchyEntityMapGenerator<TEntity> source) where TEntity:RootFolder
    {
       return source.Case<TEntity>(f => new { f.RootName, Type = 2 });
    }
}

.AddAnotherFolder()そしてそれを呼び出すには、(これ)なしで行うだけです。

[テストされていませんが、そのようなものになります]

于 2010-10-18T20:11:35.273 に答える