将类型变量作为通用类型参数传递给静态类

3
我有以下静态类
public static class MyFoo<T> where T : class
{
    public static IBar<T> Begin()
    {
        return new Bar<T>();
    }
}

在其他地方,我有一个System.Type类型的变量,我需要将其作为泛型类型参数传递,最好的方法是:

public void MyFunction(Type type)
{
     MyFoo<type>.Begin();
}

我知道可以通过反射返回MyFoo的实例(如果我将其设为非静态),但这并不理想。有没有办法将类型作为泛型类型参数传递给MyFoo静态类?


1
首先,如果您将其设置为非静态,则无需反射,您可以在“T”上强制执行一个不带参数的构造函数,并使用通用约束。其次,您要解决什么问题?为什么T不是MyFunction的参数(它可以为您推断)? - Benjamin Gruenbaum
请参考这篇帖子:https://dev59.com/eG025IYBdhLWcg3wr4F6 - Sorceri
感谢您回复我。@BenjaminGruenbaum,不幸的是我不能透露太多细节,但如果可能的话,这对我来说是最好的选择,可以为我节省很多时间,因为我已经继承了一些东西。我会解决这个问题的!谢谢。 - Riddick
1个回答

4

无法完成。第二个示例中type变量的值仅在运行时得知。而第一个示例中的T类型参数必须编译时解析。

相反,可以考虑使用Activator.CreateInstance()


感谢您回复我,我将创建一个非静态版本的解决方法 :) - Riddick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接