我的问题只是在运行时定义实例的类型,这种类型是用户定义的。 看起来像这样的东西:
Type instance1;
在运行时,用户将选择例如“int”,然后就会有,
int instance1;
有什么建议吗?在这里降低效率?
答案 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}}创建给定类型的实例。
* 如果类型可以在编译时知道,或者它只是一组有限类型之一,那么泛型方法将很有效,并且您将选择一个名为的类型编译时(即用户会说int
,char
或double
之一,您将相应地使用正确的通用名称。如果它完全不确定,你仍然需要使用反射来实例化运行时给出的类型的泛型。
答案 2 :(得分:0)
C#4.0中的动态关键字
答案 3 :(得分:0)
我认为,这就是你要找的东西:
Type myType = typeof(int);
int value = Activatior.CreateInstance(myType);
在.NET 4中,动态关键字可能更有效,更方便。