/// <summary> /// 类型<paramref name="domainObjectType"/>是否为另外一个领域类型的派生类 /// </summary> /// <param name="domainObjectType"></param> /// <returns></returns> public static bool IsDerived(Type domainObjectType) { if (domainObjectType == null) { return(false); } if (!DomainObject.IsDomainObject(domainObjectType)) { return(false); } var baseType = domainObjectType.BaseType; //基类以及以上的类,定义了ObjectRepositoryAttribute,我们就认为是派生的 //因为框架提供的基类没有标记ObjectRepositoryAttribute return(baseType != null && !DomainObject.IsFrameworkDomainObjectType(baseType)); }
internal static void Initialize() { //主动触发静态构造 foreach (var info in _types) { var derivedType = info.Value; var inheriteds = derivedType.GetInheriteds(); foreach (var baseType in inheriteds) { if (!DomainObject.IsDomainObject(baseType)) { continue; } //我们在触发扩展类型的静态构造之前,先触发一次原始类型的静态构造,这样避免静态扩展的成员在原始成员之前被注入 DomainObject.StaticConstructor(baseType); } //触发派生类型的静态构造函数 DomainObject.StaticConstructor(derivedType); } }