动态铸造

cal*_*sto 2 c# casting

如何在运行时转换传递给函数的参数?

private object PopulateObject(object dataObj, System.Data.DataRow dataRow, string query)
{


    object = DataAccess.Retriever.RetrieveArray<dataObj.GetType()>(query);
Run Code Online (Sandbox Code Playgroud)

我想知道如何在运行时在类型声明中获取dataObj.GetType().

And*_*are 8

尝试这样的事情:

private T PopulateObject<T>(T dataObj, System.Data.DataRow dataRow, string query)
{
    dataObj = DataAccess.Retriever.RetrieveArray<T>(query);
}
Run Code Online (Sandbox Code Playgroud)

这将允许您避免此方法中的任何反射,因为提供的类型参数PopulateObject也将是类型参数RetrieveArray.通过调用此方法,编译器将能够推断出类型T,从而避免编写运行时类型检查.