如何在C#中声明其类型是用户定义的实例

时间:2010-05-01 15:21:19

标签: c# .net

我的问题只是在运行时定义实例的类型,这种类型是用户定义的。 看起来像这样的东西:

Type instance1;

在运行时,用户将选择例如“int”,然后就会有,

int instance1;

有什么建议吗?在这里降低效率?

4 个答案:

答案 0 :(得分:2)

您正在寻找的是仿制药。阅读简介here

例如,您将声明该类,您希望该用户定义的类型位于其中:

class MyClass<T>
{
    private T instance1 = default(T);

    public MyClass(T initalvalue)
    {
        instance1 = initalvalue;
    }

    //... some more code
}

答案 1 :(得分:1)

如果您没有详细说明要完成的内容,可以使用generic方法 * ,也可以使用C# 4's dynamic keyword,或者使用{ {3}}创建给定类型的实例。

* 如果类型可以在编译时知道,或者它只是一组有限类型之一,那么泛型方法将很有效,并且您将选择一个名为的类型编译时(即用户会说intchardouble之一,您将相应地使用正确的通用名称。如果它完全不确定,你仍然需要使用反射来实例化运行时给出的类型的泛型。

答案 2 :(得分:0)

C#4.0中的动态关键字

答案 3 :(得分:0)

我认为,这就是你要找的东西:

Type myType = typeof(int);
int value = Activatior.CreateInstance(myType);

在.NET 4中,动态关键字可能更有效,更方便。