本文介绍了在使用Reflection的方法中更改Variable的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



如果使用Reflection调用方法变量的值,我怎样才能更改方法变量的值。



目前下面的代码正在更新局部变量的值(类级别)。



为什么? :我正在编写一个单元测试用例,其中类的对象可能会改变其内部行为并在单元测试中测试该负面情况,我想在运行时更改该变量的值,例如将对象设置为Null,有时返回为null来自数据库并且未通过我们的申请。



Hi All,

How can I change value of a variable of a method when it is invoked using Reflection.

At present below code is updating value of local variable (class level).

Why? : I am writing one Unit Test Case where object of a class might get changed its internal behavior and to test that negative scenario in Unit Test, I want to change value of that variable at runtime like setting an object to Null which sometime returning as null from Database and failing our application.

private void SetVariableValue(BehaviorState behaviorState, string variableName,object value)
{
    Type t = typeof(BehaviorState);


    foreach (var member in t.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
    {
        if (member.Name == variableName)
        {
            // changing the variable
            FieldInfo fi = (FieldInfo)member;
            fi.SetValue(behaviorState, value);
            break;
        }

    }
}





谢谢

Rushi



Thanks
Rushi

推荐答案


这篇关于在使用Reflection的方法中更改Variable的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 15:58