예제 #1
0
        /// <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));
        }
예제 #2
0
파일: IComplier.cs 프로젝트: sososu/Natasha
 /// <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));
     }
 }
예제 #3
0
 /// <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));
     }
 }
예제 #4
0
        /// <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));
        }
예제 #5
0
        /// <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));
        }