internal TypeMetadata(string metadataCode, TypeMetadata parent) { this.MetadataCode = metadataCode; this.Parent = parent; this.Index = parent.Index; this.Root = new ObjectEntry(this); var dto = DTObject.CreateReusable(metadataCode); this.Entries = Parse(dto.GetRoot()); }
public DTObject GetOrCreateObject(string findExp) { var obj = GetObject(findExp, false); if (obj == null) { obj = this.IsPinned ? DTObject.Create() : DTObject.CreateReusable(); this.SetObject(findExp, obj); } return(obj); }
/// <summary> /// 该构造是一切的起点 /// </summary> /// <param name="metadataCode"></param> internal TypeMetadata(string metadataCode) { this.MetadataCode = metadataCode; this.Index = new TypeIndex(); this.Root = new ObjectEntry(this); var dto = DTObject.CreateReusable(metadataCode); var root = dto.GetRoot(); //设置了根类型的名称 this.Root.Name = this.Root.TypeName = root.Name; this.Index.Add(this.Root); //对根类型建立索引 this.Entries = Parse(root); }
public DTObject Serialize(object instance, bool isPinned) { var dto = isPinned ? DTObject.Create() : DTObject.CreateReusable(); var serializable = instance as IDTOSerializable; if (serializable != null) { serializable.Serialize(dto, string.Empty); //string.Empty意味着 序列化的内容会完全替换dto } else { Serialize(instance, dto); } return(dto); }