如何读取匿名类型的属性?

我有一个返回的方法

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

我需要编写一个unit testing,我需要validationjsonResult.Data.status= "OK"

我如何阅读状态属性?

更新:我尝试了[assembly:InternalsVisibleTo(“TestingAssemblyName”)],但这没有帮助。 我一直收到错误{“’System.Web.Mvc.JsonResult’不包含’Status’的定义”}

此外,我想我不想修改我正在测试的代码。

所以我接受了Jon的建议并使用了反思。

  var type = jsonResult.Data.GetType(); var pinfo = type.GetProperty("Status"); string statusValue = pinfo.GetValue(jsonResult.Data,null).ToString(); Assert.AreEqual("OK", statusValue); 

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

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

请注意,您需要使用[InternalsVisibleTo]以使您的unit testing程序集访问生产程序集中的匿名类型,因为它将通过internal访问生成。

或者,只需使用reflection。

dynamic

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