0

我有以下类,它有两个嵌套类;

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;
    }
4

1 回答 1

2

您需要使用PropertyInfo.GetValue将属性的实际值传递给您的函数:

foreach (PropertyInfo pi in t.GetProperties())
{
  CallMyFunction(pi.GetValue(oBookingRequest, null));
}
于 2013-07-30T10:18:12.427 回答