装饰类层次结构

时间:2018-08-01 18:20:16

标签: c# generics decorator

给出一个具有多个类的对象图,如何获得一个修饰的层次结构实例,其中每个复杂类型也都得到修饰,而无需为每种类型创建具体的映射?例如,如果我有以下内容:

public class Root {
   public Child FirstBorn {get;set;}
   public Child SecondBorn {get;set;}
}

public class Child {
   public List<Possession> Possessions {get;set;}
}

public class Possession {

}

我想将所有复杂类型装饰为文档...

public class AsDocument<T>
{
    public AsDocument(T value)
    {
        Value = value;
        Id = ObjectId.GenerateNewId();
        Origin = value.GetType().FullName;

    }

    public String Origin { get; set; }
    public T Value { get; set; }

    public ObjectId Id { get; set; }
}

可以将根类装饰为:

var decoratedRoot = new AsDocument<Root>(someRoot);

是否有一种方法可以装饰每种复杂类型?

因此...如果装饰根以这种方式创建... FirstBorn和SecondBorn的类型为AsDocument和AsDocument

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,那么您需要这样的东西:

public class Root {
   public AsDocument<Child> FirstBorn {get;set;}
   public AsDocument<Child> SecondBorn {get;set;}
}

public class Child {
   public List<AsDocument<Possession>> Possessions {get;set;}
}

public class Possession {

}