c# - 从泛型类型调用静态方法

标签 c# generics methods static

我有一个带有泛型参数的静态类,声明如下:

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”是一个“类型参数”,它在给定的上下文中无效

在这种情况下,我如何调用TUser.Single 方法(必须调用OrmObject 中的静态构造函数)?

最佳答案

只需调用 OrmObject<TUser>.Single()而不是 TUser.Single() .

关于c# - 从泛型类型调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27888929/

相关文章:

java - 将各种类型的函数应用于值

generics - 使用记录 Haskell 进行泛型派生

java - 如何编写一个JAVA方法来查找最大用户输入?

c++ - 在对象中使用或不使用 'this'

c# - 插件中的 Windows 窗体

c# - 没有匹配项时如何跳出无限循环?

java - 为什么我不能将 lambda 分配给未类型化的谓词引用?但是可以为它分配一个初始化的类型谓词引用吗?

java - 来自父类(super class)的方法

c# - 是否可以将 .exe 程序集安装到 GAC 中?

c# - 如何为游戏编译 C# 脚本