如何阅读一个匿名类型的属性?(How to read a property of an anonym

2019-08-04 10:15发布

我有一个返回的方法

return new  System.Web.Mvc.JsonResult()
{                     
    Data = new
    {
        Status = "OK", 
    }
}

我需要写一个单元测试,我需要验证jsonResult.Data.status= "OK"

我如何读取状态属性?

更新:我试过[装配:InternalsVisibleTo(“TestingAssemblyName”),但没有帮助。 我一直得到错误{“‘System.Web.Mvc.JsonResult’不包含‘状态’的定义,”}

此外,我想我会选择不修改,我测试的代码。

所以我把乔恩的建议和使用反射。

        var type = jsonResult.Data.GetType();

        var pinfo = type.GetProperty("Status");

        string  statusValue = pinfo.GetValue(jsonResult.Data,null).ToString();

        Assert.AreEqual("OK", statusValue);

Answer 1:

最简单的方法可能是使用动态类型:

dynamic foo = ret.Data;
Assert.AreEqual("OK", foo.status);

请注意,您需要使用[InternalsVisibleTo]为了给匿名类型的单元测试组件入口在生产装配,因为它会与被产生的internal访问。

或者,只是使用反射。



Answer 2:

dynamic

dynamic testObject = YourMethodThatReturnsDynamicObject().Data;
Assert.AreEqual("OK", testObject.Status);


文章来源: How to read a property of an anonymous type?