将类型传递给IDBConnection Get< T> ()

时间:2015-12-29 11:28:04

标签: c# generics

是否可以在运行时将类型传递给Get<T>扩展名?

例如,我有像国家,州,城市这样的类,以及包含其中任何一个的对象变量实例。我想将类类型传递给var myobject = _somedata; //it could be of type countries, states, cities, etc... var q = sqlConn.Get<typeof(myobject)>() 方法

伪代码:

{{1}}

无论如何要实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

你可以,但你不想。结果代码很讨厌。

相反,请尝试编写自己的使用参数类型的扩展方法。

public static T GetLike<T>(this IDbConnection conn, T likeType)
{
    return conn.Get<T>();
}

然后你可以简单地调用

var q = sqlConn.GetLike(myobject);

编译器会推断出匿名类型。