加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单

发布时间:2020-12-16 01:20:23 所属栏目:百科 来源:网络整理
导读:利用反射: /// summary /// 调用静态方法 /// /summaryakf /// param name="t"类全名/param /// paramname="strMethod"方法名/param /// paramname="aobjParams"参数表/param /// returns函数返回值/returns public static object RunStaticMethod(System.T

利用反射:

 /// <summary>
        /// 调用静态方法
        /// </summary>akf
        /// <param name="t">类全名</param>

        /// <paramname="strMethod">方法名</param>

        /// <paramname="aobjParams">参数表</param>

        /// <returns>函数返回值</returns>

        public static object RunStaticMethod(System.Type t,string strMethod,object[] aobjParams)
        {

            BindingFlags eFlags =

            BindingFlags.Static | BindingFlags.Public |

             BindingFlags.NonPublic;

            return RunMethod(t,strMethod,null,aobjParams,eFlags);

        }

        /// <summary>

        /// 调用实例方法

        /// </summary>

        /// <param name="t">类全名</param>

        /// <paramname="strMethod">方法名</param>

        /// <paramname="objInstance">类的实例</param>

        ///<paramname="aobjParams">参数表</param>

        ///<returns>函数返回值</returns>



        public static object RunInstanceMethod(System.Type t,object objInstance,object[] aobjParams)
        {

            BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public |

             BindingFlags.NonPublic;

            return RunMethod(t,objInstance,eFlags);

        }



        private static object RunMethod(System.Type t,string

         strMethod,object[] aobjParams,BindingFlags eFlags)
        {

            MethodInfo m;

            try
            {

                m = t.GetMethod(strMethod,eFlags);

                if (m == null)
                {

                    throw new ArgumentException("There is no method ‘" +

                     strMethod + "‘ for type‘" + t.ToString() + "‘.");

                }

                object objRet = m.Invoke(objInstance,aobjParams);

                return objRet;

            }

            catch
            {

                throw;

            }

        }

  

在测试的时候例子:

假如在windows form1中有2个方法,分别是一个静态方法和一个私有实例方法如下:

private static string StaticMethod(string s,int i)
        {


            return  s+i;
        
        }


        private string InstanceMethod(string s,int i)
        {


            return s + i;

        }

  

?

测试代码可以这样调用:

?

[TestMethod]
public void TestInstanceMethod()
{

Form1 f = new Form1();
//f.msg(f);
//f.button1_Click(null,null);

string ret = "" + RunInstanceMethod(typeof(Form1),"InstanceMethod",f,new object[] { "123",123 });

Assert.AreEqual(ret,"123123");

}


[TestMethod]
public void TestStaticMethod()
{

string ret = "" + RunStaticMethod(typeof(Form1),"StaticMethod","123123");

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读