예제 #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
        /// <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]);
        }
예제 #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
파일: 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));
     }
 }
예제 #5
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));
        }
예제 #6
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));
        }