zoukankan      html  css  js  c++  java
  • C#反射调用程序集中的方法

    将dll注入进行到进程之后获取程序集信息及反射调用方法,记录一下备忘。

    获取程序集集合,找出需要用的那个
    Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
    Assembly assembly = assemblies.Where(p => p.FullName.Contains("XXXXX")).FirstOrDefault();
    Type[] types = assembly.GetTypes();

    //调用XXXXX.ClassName中的MethodName方法
    Type type = assembly.GetType("XXXXX.ClassName");
    object obj = Activator.CreateInstance(type, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, null, null);
    MethodInfo methodRunCom = type.GetMethod("MethodName", BindingFlags.NonPublic | BindingFlags.Instance);
    object objResult = methodRunCom.Invoke(obj, null);
    string ret2 = objResult == null ? string.Empty : objResult.ToString(); //把返回处理成自己需要的格式

    //获取XXXXX.ClassName中的控件
    Type type = assembly.GetType("XXXXX.ClassName");
    MethodInfo[] infos = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
    object obj = Activator.CreateInstance(type, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, null, null);
    //控件处理
    System.Windows.Forms.TextBox textBox = (System.Windows.Forms.TextBox)type.GetField("TextBoxName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
    textBox.Text = "123456789";
    System.Windows.Forms.RadioButton radioButton = (System.Windows.Forms.RadioButton)type.GetField("RadioButtonName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
    radioButton.Checked = false;
    //调用click
    MethodInfo btnOKMethodInfo = type.GetMethod("btnXXX_Click", BindingFlags.Instance | BindingFlags.NonPublic);
    object[] param = new object[] { new object(), new EventArgs() };
    object objResult = btnOKMethodInfo.Invoke(obj, param);

    //获取属性值
    Type type = assembly.GetType("XXX.ClassName");
    MethodInfo methodInfo = type.GetMethod("CreateInstance");
    object obj = methodInfo.Invoke(null, null);
    string propertyName = "PropertyName";
    IEnumerable<PropertyInfo> property = from pi in obj.GetType().GetProperties() where pi.Name.ToLower() == propertyName.ToLower() select pi;
    object propertyValueObj = property.First().GetValue(obj, null);
    string value = propertyValueObj.ToString();
  • 相关阅读:
    this和$(this)的关系
    单色边表格
    php概率算法
    jQuery Ajax 参数解析
    拍拍CPS入门使用
    飞鸽端口被占
    浏览器调试工具技巧分享
    事件click,bind,click
    jQuery旋转插件—rotate
    利用谷歌API生成二维码
  • 原文地址:https://www.cnblogs.com/jiayan1578/p/14003008.html
Copyright © 2011-2022 走看看