/// <summary> /// Syntax: getProxyObject({type} {assembly}) or getProxyType({type}} /// </summary> /// <param name="appDomain"></param> /// <param name="rawTypeOfProxyToCreate"></param> /// <returns></returns> public static object getProxyObject(this AppDomain appDomain, string rawTypeOfProxyToCreate) { string assemblyName = ""; string typeOfProxyToCreate = ""; try { var foundProxyType = appDomain.getProxyType(rawTypeOfProxyToCreate, ref assemblyName, ref typeOfProxyToCreate); if (foundProxyType != null) { object proxy = appDomain.CreateInstanceAndUnwrap(assemblyName, typeOfProxyToCreate); if (proxy.notNull()) return proxy; } "could not create object: ".error(rawTypeOfProxyToCreate); } catch (Exception ex) { PublicDI.log.ex(ex, "error creating object: " + rawTypeOfProxyToCreate); } return null; //return appDomain.CreateInstanceAndUnwrap(dllToLoad, typeToCreateAndUnwrap); }
/// <summary> /// Syntax: getProxyMethod({method} {type} {assembly}) /// </summary> /// <param name="appDomain"></param> /// <param name="methodToCreate"></param> /// <param name="methodParameters"></param> /// <returns></returns> public static object getProxyMethod(this AppDomain appDomain,string methodToCreate, object[] methodParameters) { try { string[] splitedType = methodToCreate.Split(' '); if (splitedType.Length != 3) PublicDI.log.error( "in getProxyMethod, wrong format provided (syntax: getProxyMethod({method} {type} {assembly}) ) : " + methodToCreate); else { string methodName = splitedType[0]; string typeName = splitedType[1]; string assemblyName = splitedType[2]; var proxyObject = appDomain.CreateInstanceAndUnwrap(assemblyName, typeName); if (proxyObject.isNull()) PublicDI.log.error("in getProxyMethod, could not create proxy:{0} in assembly {1}", typeName, assemblyName); else { MethodInfo methodInfo = PublicDI.reflection.getMethod(proxyObject.GetType(), methodName, methodParameters); if (methodInfo == null) PublicDI.log.error("in getProxyMethod, could not find method {0} in type {1}", methodName, proxyObject.GetType()); return methodInfo; } } } catch (Exception ex) { PublicDI.log.ex(ex, "in getProxyMethod, error creating: " + methodToCreate); } return null; }
/// <summary> /// Creates a new instance of the specified type defined in the specified assembly file. /// </summary> /// <param name="appDomain">The app domain.</param> /// <param name="assemblyFile">The assembly file.</param> /// <param name="typeName">Name of the type.</param> /// <param name="ignoreCase">if set to <c>true</c> [ignore case].</param> /// <param name="bindingAttr">The binding attr.</param> /// <param name="binder">The binder.</param> /// <param name="args">The args.</param> /// <param name="culture">The culture.</param> /// <param name="activationAttributes">The activation attributes.</param> /// <returns></returns> public static object CreateInstanceAndUnwrap(this AppDomain appDomain, string assemblyFile, string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes) { return appDomain.CreateInstanceAndUnwrap(assemblyFile, typeName, ignoreCase, bindingAttr, binder, args, culture, activationAttributes, AppDomain.CurrentDomain.Evidence); }
public static object createAndUnWrap(this AppDomain appDomain, string dllWithType, string typeToCreateAndUnwrap) { return appDomain.CreateInstanceAndUnwrap(dllWithType, typeToCreateAndUnwrap); }