private IEntityProxy CreateProxy() { Type entityType = this.GetType(); Type proxyType = EntityProxyFactory.GetProxy(entityType); if (proxyType == null) { throw new NotImplementedException( string.Format("实体类型 {0} 并没有注册匹配的代理类型。", entityType.FullName) ); } else { return(proxyType.FastNew() as IEntityProxy); } }
public static Entity LoadFromHttp(HttpContext context, ParameterInfo p) { // 这个方法原本就是给 ClownFish.Web 调用的, // 所以这里直接反射 ClownFish.Web 来调用它的实体填充逻辑。 if (context == null) { throw new ArgumentNullException(nameof(context)); } if (p == null) { throw new ArgumentNullException(nameof(p)); } Init(); Entity resultObject = null; Entity entityObject = p.ParameterType.FastNew() as Entity; Type proxyType = EntityProxyFactory.GetProxy(p.ParameterType); if (proxyType != null) { IEntityProxy proxy = proxyType.FastNew() as IEntityProxy; proxy.Init(entityObject); resultObject = proxy as Entity; } else { resultObject = entityObject; } // 为了不直接依赖于 ClownFish.Web 项目,这里就采用反射方式处理 object builder = ObjectFactory.New(s_builderType); s_method.FastInvoke(builder, context, resultObject, p); return(resultObject); }