使用泛型类的静态方法

时间:2017-07-06 20:41:25

标签: c# generics

我有上面的问题。我的代码:

public abstract class BaseFactory<T> where T: class
{
    protected static dbModelContainer context = new dbModelContainer();

    public static int UpdateDataBase_static()
    {
        return context.SaveChanges();
    }
 }

我的问题是如何调用

BaseFactory.UpdateDataBase_static();

而不是:

BaseFactory<SomeClass>.UpdateDataBase_static();

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

你不能,因为没有这样的方法。最接近的是具有泛型类继承的非泛型基础。那么你可以在那里有一个不依赖于参数化类型的方法。

答案 1 :(得分:1)

你没有。

在访问类时,您始终需要提供泛型类型参数,即使您未在方法中使用该类型参数。由于实际上在方法中使用泛型类型,这意味着您可以将该方法移出该类,并将其移动到非泛型类中,但只要它在该类中你需要提供通用参数。

答案 2 :(得分:0)

您无法完全按照自己的要求进行操作,但由于该方法根本不使用T,因此您只需使用BaseFactory<object>.UpdateDataBase_static();而无需指定任何特定的课程。

但作为编辑评论,一般来说,从不使用泛型参数的泛型类中的方法可能不应该存在。

答案 3 :(得分:0)

要致电BaseFactory.UpdateDataBase_static();,您需要一个班级BaseFactory。从中继承通用BaseFactory<T>

public abstract class BaseFactory
{
    protected static dbModelContainer context = new dbModelContainer();

    public static int UpdateDataBase_static()
    {
        return context.SaveChanges();
    }
 }

public abstract class BaseFactory<T>:BaseFactory where T: class
{
    ....
}