zoukankan      html  css  js  c++  java
  • 反射相关

    1.一般反射方法: 

    Type type= Type.GetType("FullClassName");
      MethodInfo methodInfo =type.GetMethod("MethedNam");
             object[] parameters;
                      foreach (var p in listPara)
                 {
                     parameters[i] = p;
                     i++;
                 }
    
             try
             {
                    object o = Activator.CreateInstance(type);
                return methodInfo.Invoke(o, parameters ).ToString();
    
             }
             catch (Exception)
             {
    
                 return string.Empty;
             }
           
             ///  T Get<T>() 
    
    ///{string interfaceName = typeof(T).Name;
    /// T temp = (T)Assembly.Load("Dal").CreateInstance("DAL" + "." + interfaceName.Substring(1, interfaceName.Length - 1))
    
    ///}
    
    
    

     Express的compile方法

    public Func<object, object[], object> GetDelegate()
    {
        Expression<Func<object, object[], object>> exp = (instance, parameters) =>
            ((ClassName)instance).Method(parameters[0], parameters[1]);

        return exp.Compile();
    }

     Emit: 代码片段

     internal static SetHandler CreateSetHandler(Type type, PropertyInfo propertyInfo)
            {
                MethodInfo setMethodInfo = propertyInfo.GetSetMethod(true);
                DynamicMethod dynamicSet = CreateSetDynamicMethod(type);
                ILGenerator setGenerator = dynamicSet.GetILGenerator();
    
                setGenerator.Emit(OpCodes.Ldarg_0);
                setGenerator.Emit(OpCodes.Ldarg_1);
                UnboxIfNeeded(setMethodInfo.GetParameters()[0].ParameterType, setGenerator);
                setGenerator.Emit(OpCodes.Call, setMethodInfo);
                setGenerator.Emit(OpCodes.Ret);
    
                return (SetHandler)dynamicSet.CreateDelegate(typeof(SetHandler));
            }
     private static DynamicMethod CreateSetDynamicMethod(Type type)
            {
                return new DynamicMethod("DynamicSet", typeof(void),
                      new Type[] { typeof(object), typeof(object) }, type, true);
            }
    
  • 相关阅读:
    Vim快捷键键位图大全
    Docker快速入门
    针对base64编码和URIEncode的一点研究
    JavaEE初学笔记之Servlet与Tomcat
    【编码】彻底弄懂ASCII、Unicode、UTF-8之间的关系
    React的世界观及与Vue之比较
    彻底搞懂CSS文本、空白换行问题
    Vue实现懒加载的基本思路
    CSS中的px与物理像素、逻辑像素、1px边框问题
    Vue插值文本换行问题
  • 原文地址:https://www.cnblogs.com/fuhui/p/1942449.html
Copyright © 2011-2022 走看看