从泛型类型调用静态方法
Call static method from generic type
我有一个带有通用参数的静态 class,声明如下:
public static partial class CMSLib<TUser> where TUser : CMSLib<TUser>.UserBase
{
public abstract class UserBase : OrmObject<TUser>
{
public UInt32 Id { get; set; }
public string Login { get; set; }
/* etc. */
}
}
OrmObject
声明如下:
public abstract class OrmObject<T> where T: class
{
static OrmObject()
{
using (var db = Db.Open())
db.CreateTable<T>();
}
public static T Single(Expression<Func<T, bool>> where) { ... }
}
当我尝试从通用参数调用方法 Single 时:
public static partial class CMSLib<TUser> where TUser : CMSLib<TUser>.UserBase
{
public static TUser SomeFunction()
{
var user = TUser.Single(...); // Here error
...
}
}
我收到错误 'TUser' 是一个 'type parameter',它在给定的上下文中无效
在这种情况下我如何调用 TUser.Single 方法(必须调用 OrmObject
中的静态构造函数)?
只需调用 OrmObject<TUser>.Single()
而不是 TUser.Single()
。
我有一个带有通用参数的静态 class,声明如下:
public static partial class CMSLib<TUser> where TUser : CMSLib<TUser>.UserBase
{
public abstract class UserBase : OrmObject<TUser>
{
public UInt32 Id { get; set; }
public string Login { get; set; }
/* etc. */
}
}
OrmObject
声明如下:
public abstract class OrmObject<T> where T: class
{
static OrmObject()
{
using (var db = Db.Open())
db.CreateTable<T>();
}
public static T Single(Expression<Func<T, bool>> where) { ... }
}
当我尝试从通用参数调用方法 Single 时:
public static partial class CMSLib<TUser> where TUser : CMSLib<TUser>.UserBase
{
public static TUser SomeFunction()
{
var user = TUser.Single(...); // Here error
...
}
}
我收到错误 'TUser' 是一个 'type parameter',它在给定的上下文中无效
在这种情况下我如何调用 TUser.Single 方法(必须调用 OrmObject
中的静态构造函数)?
只需调用 OrmObject<TUser>.Single()
而不是 TUser.Single()
。