public void ParseType3() { const string code = "{id:'int',name:'ascii,10',person:{name:'string,10',sex:'byte'},first:'person',menu:{person:{id:'long',name:'string,5'},name:'string,10',parent:'menu',childs:['menu']},others:[{id:'int',name:'string',person:'menu.person'}],values:['string,10'],others2:'others'}"; var metadata = DTObject.GetMetadata(code); var es = metadata.Entries.ToArray(); AssertValue(es[0], "id", "int"); AssertValue(es[1], "name", "ascii", "10"); AssertObject(es[2], "person", "person"); var person = es[2] as ObjectEntry; var personChilds = person.Childs.ToArray(); AssertValue(personChilds[0], "name", "string", "10"); AssertValue(personChilds[1], "sex", "byte"); AssertObject(es[3], "first", "person"); var first = es[3] as ObjectEntry; var firstChilds = first.Childs.ToArray(); AssertValue(firstChilds[0], "name", "string", "10"); AssertValue(firstChilds[1], "sex", "byte"); AssertMenu(es[4]); AssertOthers(es[5], "others", "others"); AssertList(es[6], "values", "values"); var valuesItem = (es[6] as ListEntry).ItemEntry; AssertValue(valuesItem, "item", "string", "10"); AssertOthers(es[7], "others2", "others"); }
public void ParseType2() { const string code = "{id:'int',name:'ascii,10',person:{name:'string,10',sex:'byte'}}"; var metadata = DTObject.GetMetadata(code); var es = metadata.Entries.ToArray(); AssertValue(es[0], "id", "int"); AssertValue(es[1], "name", "ascii", "10"); AssertObject(es[2], "person", "person"); }
public void ParseType1() { //const string code = "{id:'int',name:'ascii,10',person:{name:'string,10',sex:'byte'},first:'person',menu:{person:{id,nam}},name:'string,10',parent:'menu',childs:['menu']},others:[{id:'int',name:'string',person:'menu.person'}]}"; const string code = "{id:'int',name:'ascii,10'}"; var metadata = DTObject.GetMetadata(code); var es = metadata.Entries.ToArray(); AssertValue(es[0], "id", "int"); AssertValue(es[1], "name", "ascii", "10"); }
/// <summary> /// 远程根类 /// </summary> /// <param name="typeName">类型名称,请注意,同一个类型名称的<paramref name="metadataCode"/>代码应该相同</param> /// <param name="metadataCode"></param> internal TypeDefine(string typeName, string metadataCode, Type domainInterfaceType, Type objectType, bool closeMultiTenancy) : this(typeName, metadataCode, DTObject.GetMetadata(FormatMetadataCode(typeName, metadataCode)), domainInterfaceType, objectType, typeName, closeMultiTenancy) { }
/// <summary> /// 远程根类 /// </summary> /// <param name="typeName">类型名称,请注意,同一个类型名称的<paramref name="metadataCode"/>代码应该相同</param> /// <param name="metadataCode"></param> internal TypeDefine(string typeName, string metadataCode, Type domainInterfaceType, Type objectType) : this(typeName, metadataCode, DTObject.GetMetadata(FormatMetadataCode(typeName, metadataCode)), domainInterfaceType, objectType, typeName) { }