将类型传递给 IDB <获取 T > ()

  • 本文关键字:获取 类型 IDB c# generics
  • 更新时间 :
  • 英文 :


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

例如,我有像Countrys、States、Cities这样的类,以及一个包含其中任何一个的对象变量实例。我想把类类型传递给Get<T>方法

伪码:

var myobject = _somedata;  //it could be of type countries, states, cities, etc...
var q = sqlConn.Get<typeof(myobject)>()

有没有办法做到这一点?

你可以,但你不想。结果代码很糟糕。

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

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

然后你可以简单地调用

var q = sqlConn.GetLike(myobject);

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

最新更新