将未知类型作为参数传递给方法,然后再转换为该类型

时间:2014-07-03 15:37:30

标签: c# linq generics dynamic

我需要创建一个接受未知类型的方法,然后再使用该类型来访问对象。

更多细节。我有一个DevEx网格,我使用GetRow来获取记录。 GetRow必须是Linq类对象的类型才能访问记录的属性。我试图创建一个通用方法,允许我传入Linq对象的类型,然后动态地将GetRow的结果转换为该对象。然后我将获取列fieldname以访问类似属性(objectType是未知类型):

void DoGrid (GridView gv, objectType)
{    

    PropertyInfo[] properties = objectType.GetProperties();

    foreach (GridColumn col in gv.Columns)
        {
             if (col.Visible)
             {
                 PropertyInfo property = properties.Where(prop => prop.Name == col.FieldName).FirstOrDefault();
                 ...
             }
        }

}

1 个答案:

答案 0 :(得分:1)

您是否只想找到一种使用泛型的方法?也许是这样的事情:

void DoGrid<T>(GridView gv)
{
    PropertyInfo[] properties = typeof(T).GetProperties();

    foreach (GridColumn col in gv.Columns)
    {
        ...
    }
}

然后你就像使用它一样:

DoGrid<MyClassFullOfProperties>(myGridView);