0

我有嵌套类,即

命令

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

订单项

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

因为我有嵌套并且我使用 GUID 作为我的对象的 ID,所以我想知道是否有通用方法来查找给定 GUID 的对象。一个我有这个对象,然后我可以将它从它的父列表中删除。

顺便说一句,我确实意识到我可以使用特定的 lambda 表达式来获取特定的对象,但这会导致许多不同场景的许多表达式,因此很多人对一种通用方法感兴趣。

谢谢,

4

1 回答 1

2

我可能会创建一个接口,我的所有类(或基类)都将实现调用IGuidSearchable或类似的东西。它需要设置两个属性,IDChildrenList<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 回答