是否有可能找到(一般),在C#中的嵌套类一个GUID的对象?(Is it possible to f

2019-10-30 18:52发布

我有嵌套类,即

订购

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

因为我有筑巢和我使用的GUID作为标识为我的目标,我想知道是否有找给定GUID对象的通用方法。 我有这个对象,然后我可以从它的父列表中删除。

顺便说一句,我也知道我可以使用特定的lambda表达式来获得在特定的对象,但是这将导致许多表达式许多不同的情况,在一个通用的方法,因此很多的兴趣。

谢谢,

Answer 1:

我可能会创造我所有的类(或基类)的将实现所谓的接口IGuidSearchable或类似的东西。 这将需要设置两个属性,ID和一个Children的收集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    
}


文章来源: Is it possible to find(generically) an object with a GUID in a nested Class in C#?