0

ネストされたクラスがあります。

注文

ID, (GUID = 8e6e48f7-9047-4e2a-95e7-ec4318641fbb)
Date
Orders -> List<OrderItem>

OrderItem

ID, (GUID= = 4582234b-d8b5-4665-b00f-e4f09ff3e2c6)
ProductId
Qty
Unit
Price
ID, (GUID= = b0d12322-e92c-42c6-b2b7-520db1d3a818)
ProductId
Qty
Unit
Price

ネストがあり、オブジェクトのIDとしてGUIDを使用しているため、GUIDを指定してオブジェクトを検索する一般的なメソッドがあるかどうか疑問に思っています。このオブジェクトを持っていると、親リストから削除できます。

ちなみに、特定のラムダ式を使用して特定のオブジェクトを取得できることはわかっていますが、これにより、さまざまなシナリオで多くの式が生成されるため、1つの一般的なアプローチに多くの関心が寄せられます。

ありがとう、

4

1 に答える 1

2

私はおそらく、私のすべてのクラス(または基本クラス)が呼び出されるIGuidSearchableかそのようなものを実装するインターフェースを作成するでしょう。IDとのChildrenコレクションの2つのプロパティを設定する必要がありList<ISearchable>ます。実装クラスはこれを使用するか、このプロパティを使用するプロパティと等しくなるように設定する責任があります(Orders -> List<OrderItem>例のように)。

public static IGuidSearchable FindObjectByGuid(this IGuidSearchable source, System.Guid guid) 
{
    if (source.ID.Equals(guid)) 
    {
        return source;
    }
    foreach (ISearchable child in source.Children)
    {
        if (child.FindObjectByGuid(guid) != null)
            return child;            
    }   

    return null; // Fall through    
}
于 2012-12-05T12:51:59.637 に答える