我有以下课程,其中有两个嵌套的课程;
public class Request
{
public Hotel Hotel {get;set;}
public Room Room {get;set;}
}
嵌套类
public class Hotel
{
public int HotelId {get;set;}
public string Name {get;set;}
public string Address {get;set;}
public string CountryCode {get;set;}
}
和
public class Room
{
public int RoomId {get;set;}
public string Name {get;set;}
}
基本上,我可以很好地创建对象;
Request oRequest = new Request();
我想做的是能够遍历该类,找到任何嵌套的类并将它们传递给类似的函数
Type t = oBookingRequest.GetType();
foreach (PropertyInfo pi in t.GetProperties())
{
CallMyFunction(pi);
}
我遇到的问题是,在调用CallMyFunction(pi)时,我实际上无法查看类属性值,就好像我没有将pi作为实际对象传递一样吗?我这样做是否正确,因为如果我调用函数CallMyFunction(oRequest.Hotel),它可以正常工作。
编辑:
函数CallMyFunction是一个使用ValidationResult的ValidationContext函数,因此我需要传递包含所有属性而不是每个属性值的实际对象。函数CallMyFunction是
private List<ValidationResult> CallMyFunction (object oObject)
{
var context = new ValidationContext(oObject, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
Validator.TryValidateObject(oObject, context, results, false);
return results;
}
您需要使用PropertyInfo.GetValue将属性的实际值传递到函数中:
foreach (PropertyInfo pi in t.GetProperties())
{
CallMyFunction(pi.GetValue(oBookingRequest, null));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句