zoukankan      html  css  js  c++  java
  • D365 用反射来调用调用Class的私有变量和方法

    
    
    using System.Reflection;
    
    [ExtensionOf(classStr(VyaReflectionClassBase))]
    final class VyaReflectionClass_Extension
    {
        /// <summary>
        /// 获取基类的私有变量
        /// </summary>
        public void getPrivateVar()
        {
            int getPrivateVar;
            var bindFlags = BindingFlags::NonPublic | BindingFlags::Instance;
            var field = this.GetType().GetField(identifierStr(privateVar), bindFlags);
    
            if (field)
            {
                getPrivateVar = field.GetValue(this);
            }
        }
    
        /// <summary>
        /// 设置基类私有变量的值
        /// </summary>
        /// <param name = "_newValue"></param>
        public void setPrivateVar(int _newValue)
        {
            var bindFlags = BindingFlags::NonPublic | BindingFlags::Instance;
            var field = this.GetType().GetField(identifierStr(privateVar), bindFlags);
    
            if (field)
            {
                field.SetValue(this, _newValue);
            }
        }
    
        /// <summary>
        /// 调用基类的私有方法
        /// </summary>
        public void callPrivateMehtod()
        {
            //设置方法参数
            System.Object[] parametersArray = new System.Object[2]();
            parametersArray.SetValue(5, 0);
            parametersArray.SetValue(24, 1);
             
            var bindFlags = BindingFlags::Instance | BindingFlags::NonPublic;
      
            var methodInfo = this.GetType().GetMethod(methodStr(VyaReflectionClassBase, privateMethod), bindFlags);
      
            if (methodInfo)
            {
                int returnValue;
                returnValue = methodInfo.Invoke(this,  parametersArray);
            }
        }
    
    }
    
    
    
    /// <summary>
    /// 定义基类
    /// </summary>
    class VyaReflectionClassBase
    {
        //定义私有变量
        private int privateVar;
    
        public void new()
        {
            privateVar = 5;
        }
    
        /// <summary>
        /// 定义私有方法
        /// </summary>
        /// <param name = "_qty"></param>
        /// <param name = "_price"></param>
        /// <returns></returns>
        private CostAmount privateMethod(InventQty _qty, CostPrice _price)
        {
            CostAmount      costAmount;
            ;
    
            return _qty * _price;
        }
    
    }

    using System.Reflection;

    [ExtensionOf(classStr(VyaReflectionClassBase))]

    finalclassVyaReflectionClass_Extension

    {

    /// <summary>

    /// 获取基类的私有变量

    /// </summary>

    publicvoid getPrivateVar()

    {

    int getPrivateVar;

    var bindFlags = BindingFlags::NonPublic | BindingFlags::Instance;

    var field = this.GetType().GetField(identifierStr(privateVar), bindFlags);

    if (field)

    {

    getPrivateVar = field.GetValue(this);

    }

    }

    /// <summary>

    /// 设置基类私有变量的值

    /// </summary>

    /// <param name = "_newValue"></param>

    publicvoid setPrivateVar(int _newValue)

    {

    var bindFlags = BindingFlags::NonPublic | BindingFlags::Instance;

    var field = this.GetType().GetField(identifierStr(privateVar), bindFlags);

    if (field)

    {

    field.SetValue(this, _newValue);

    }

    }

    /// <summary>

    /// 调用基类的私有方法

    /// </summary>

    publicvoid callPrivateMehtod()

    {

    //设置方法参数

    System.Object[] parametersArray = new System.Object[2]();

    parametersArray.SetValue(5, 0);

    parametersArray.SetValue(24, 1);

    var bindFlags = BindingFlags::Instance | BindingFlags::NonPublic;

    var methodInfo = this.GetType().GetMethod(methodStr(VyaReflectionClassBase, privateMethod), bindFlags);

    if (methodInfo)

    {

    int returnValue;

    returnValue = methodInfo.Invoke(this, parametersArray);

    }

    }

    }

  • 相关阅读:
    git命令
    基于babel实现react核心功能(初始化,fiber,hook)
    Vue组件化原理-Xmind版
    访问后台 出现 俩次请求拼接情况 例如 https://localhost:4431/api/auth/jwt/token+https://localhost:4431/api/auth/jwt/token
    spring mvc 拦截器和过滤器
    前后端分离,session登录实例,jquery版本必须大于1.5,否则withCredentials不起作用
    kafka batches 数据结构是自定义map
    数据库blob中文乱码,如何查看
    先更新数据库 后删缓存
    高老师好
  • 原文地址:https://www.cnblogs.com/dingkui/p/14473006.html
Copyright © 2011-2022 走看看