/// <summary> /// 查找远程根对象 /// </summary> /// <param name="id"></param> /// <returns></returns> public static dynamic FindRemoteRoot <T>(object id) where T : AggregateRootDefine { var define = TypeDefine.GetDefine <T>(); return(RemotePortal.GetObject(define, id)); }
/// <summary> /// 注册类型为动态结构的领域属性 /// </summary> /// <typeparam name="TD"></typeparam> /// <typeparam name="OT"></typeparam> /// <param name="name"></param> /// <returns></returns> public static DomainProperty RegisterDynamic <TD, OT>(string name) where TD : TypeDefine { var ownerType = typeof(OT); var define = TypeDefine.GetDefine <TD>(); var propertyType = define.MetadataType; var result = Register(name, propertyType, ownerType, (o, p) => { return(define.EmptyInstance); }, PropertyChangedMode.Definite, define.MetadataType); define.SetBelongProperty(result); return(result); }
/// <summary> /// 动态类型的集合 /// </summary> /// <typeparam name="TD"></typeparam> /// <typeparam name="OT"></typeparam> /// <param name="propertyName"></param> /// <returns></returns> public static DomainProperty RegisterDynamicCollection <TD, OT>(string propertyName) where TD : TypeDefine where OT : DomainObject { var define = TypeDefine.GetDefine <TD>(); var elementType = define.MetadataType; //动态类型 return(Register(propertyName, typeof(DomainCollection <dynamic>), typeof(OT), (owner, property) => { var collection = new DomainCollection <dynamic>(property); collection.Parent = owner; return collection; }, PropertyChangedMode.Definite, elementType)); }