/// <summary> /// Create instance /// </summary> /// <param name="type"></param> /// <param name="ctorArgDescriptors"></param> /// <typeparam name="TInstance"></typeparam> /// <returns></returns> public static TInstance CreateInstance <TInstance>(Type type, IEnumerable <CtorArgDescriptor> ctorArgDescriptors) { if (ctorArgDescriptors is null) { return(Types.CreateInstance <TInstance>()); } var descriptors = ctorArgDescriptors.ToList(); var instance = !descriptors.Any() ? Types.CreateInstance(type) : CreateInstanceCore(type, descriptors); return(instance is TInstance ret ? ret : default);
/// <summary> /// Create instance /// </summary> /// <param name="ctorArgDescriptors"></param> /// <typeparam name="TInstance"></typeparam> /// <returns></returns> public static TInstance CreateInstance <TInstance>(IEnumerable <CtorArgDescriptor> ctorArgDescriptors) { if (ctorArgDescriptors is null) { return(Types.CreateInstance <TInstance>()); } var descriptors = ctorArgDescriptors.ToList(); return(!descriptors.Any() ? Types.CreateInstance <TInstance>() : CreateInstanceCore <TInstance>(descriptors)); }
/// <summary> /// Create instance /// </summary> /// <typeparam name="TTypeInstance"></typeparam> /// <param name="type"></param> /// <param name="args"></param> /// <returns></returns> public static TTypeInstance CreateInstance <TTypeInstance>(this Type type, params object[] args) => Types.CreateInstance <TTypeInstance>(type, args);