public object Instantiate() { if (ReflectHelper.IsAbstractClass(mappedClass)) { throw new InstantiationException("Cannot instantiate abstract class or interface: ", mappedClass); } if (generateFieldInterceptionProxy) { return(proxyFactory.GetFieldInterceptionProxy()); } if (optimizer != null) { return(optimizer.CreateInstance()); } if (mappedClass.IsValueType) { return(Cfg.Environment.BytecodeProvider.ObjectsFactory.CreateInstance(mappedClass, true)); } if (constructor == null) { throw new InstantiationException("No default constructor for entity: ", mappedClass); } try { return(constructor.Invoke(null)); } catch (Exception e) { throw new InstantiationException("Could not instantiate entity: ", e, mappedClass); } }
protected override object CreateInstance() { if (!_enhancedForLazyLoading) { return(base.CreateInstance()); } var entity = _proxyFactory.GetFieldInterceptionProxy(base.CreateInstance); _entityMetamodel.BytecodeEnhancementMetadata.InjectInterceptor(entity, null); return(entity); }
public object Instantiate() { if (ReflectHelper.IsAbstractClass(mappedClass)) { throw new InstantiationException("Cannot instantiate abstract class or interface: ", mappedClass); } if (generateFieldInterceptionProxy) { return(proxyFactory.GetFieldInterceptionProxy(GetInstance())); } return(GetInstance()); }
// 6.0 TODO: Move to IProxyFactory public static object GetFieldInterceptionProxy(this IProxyFactory proxyFactory) { if (proxyFactory is StaticProxyFactory staticProxyFactory) { return(staticProxyFactory.GetFieldInterceptionProxy()); } #pragma warning disable 618 return(proxyFactory.GetFieldInterceptionProxy(null)); #pragma warning restore 618 }
// 6.0 TODO: Remove internal static object GetFieldInterceptionProxy(this IProxyFactory proxyFactory, Func <object> instantiateFunc) { if (proxyFactory is StaticProxyFactory staticProxyFactory) { return(staticProxyFactory.GetFieldInterceptionProxy()); } #pragma warning disable 618 return(proxyFactory.GetFieldInterceptionProxy(instantiateFunc?.Invoke())); #pragma warning restore 618 }
public object Instantiate() { if (_isAbstract) { throw new InstantiationException("Cannot instantiate abstract class or interface: ", mappedClass); } // 6.0 TODO: Remove if statement if (generateFieldInterceptionProxy) { return proxyFactory.GetFieldInterceptionProxy(CreateInstance); } return CreateInstance(); }