/// <summary> /// 创建函数委托 /// </summary> /// <param name="delegateType">委托类型</param> /// <returns></returns> public Delegate GetRuntimeMethodDelegate(Type delegateType) { string body = Static().Body(GetScript()).Builder(); Assembly assembly = null; if (!_useFileComplie) { assembly = ScriptComplier.StreamComplier(body, _class_name, SingleError); } else { assembly = ScriptComplier.FileComplier(body, _class_name, SingleError); } if (assembly == null) { return(null); } return(AssemblyOperator .Loader(assembly)[_class_name] .GetMethod(_method_name) .CreateDelegate(delegateType)); }
/// <summary> /// 根据命名空间和类的位置获取类型 /// </summary> /// <param name="content">脚本内容</param> /// <param name="classIndex">命名空间里的第index个类</param> /// <param name="namespaceIndex">第x个命名空间</param> /// <returns></returns> public static Type GetType(string content, int classIndex = 1, int namespaceIndex = 1) { classIndex -= 1; namespaceIndex -= 1; Assembly assembly = null; string className = ScriptComplier.GetClassName(content, classIndex, namespaceIndex); assembly = ScriptComplier.FileComplier(content, className); return(AssemblyOperator.Loader(assembly)[className]); }
/// <summary> /// 获取编译后的程序集 /// </summary> /// <param name="className">类名</param> /// <returns></returns> public Assembly GetAssemblyByScript(string content) { if (!_useFileComplie) { return(ScriptComplier.StreamComplier(content, SingleError)); } else { return(ScriptComplier.FileComplier(content, SingleError)); } }
/// <summary> /// 获取编译后的程序集 /// </summary> /// <param name="className">类名</param> /// <returns></returns> public Assembly GetAssemblyByScript(string className = null) { if (!_useFileComplie) { return(ScriptComplier.StreamComplier(Builder(), className, SingleError)); } else { return(ScriptComplier.FileComplier(Builder(), className, SingleError)); } }
/// <summary> /// 创建函数委托 /// </summary> /// <param name="delegateType">委托类型</param> /// <returns></returns> public static Delegate GetRuntimeMethodDelegate(string content, Type delegateType) { string className = _get_class.Match(content).Groups["result"].Value; Assembly assembly = ScriptComplier.StreamComplier(content, className, SingleError); if (assembly == null) { return(null); } return(AssemblyOperator .Loader(assembly)[className] .GetMethod("DynamicMethod") .CreateDelegate(delegateType)); }
/// <summary> /// 创建函数委托 /// </summary> /// <param name="delegateType">委托类型</param> /// <returns></returns> public Delegate GetRuntimeMethodDelegate(Type delegateType) { string body = MakerHeader().MakerContent(GetMethodString()).Script; Assembly assembly = ScriptComplier.StreamComplier(body, _class_name, SingleError); if (assembly == null) { return(null); } return(AssemblyOperator .Loader(assembly)[_class_name] .GetMethod("DynimacMethod") .CreateDelegate(delegateType)); }