我班上的变量类型为'Type':
class A
{
public static Type MyType;
}
我在任何地方建造了这个变量。例如:
A.MyType = b.GetType();
第一个问题:我需要使用存储在MyType中的类型声明新变量。
<MyType> myValue = new <MyType>;
第二个问题:我需要一个函数来指示是否可以减少'Type'的其他变量。
答案 0 :(得分:6)
第一个问题:我需要使用存储在MyType中的类型声明新变量。
基本上你不能这样做。
需要在编译时知道变量类型。您不能使用仅在执行时知道的类型声明变量。您可以使用泛型获得一些的方式:
public class Foo<T>
{
private T value;
}
您甚至可以添加一个约束来要求T
具有无参数构造函数,然后您可以调用它:
public class Foo<T> : new()
{
private T value = new T();
}
...如果您只是在执行时使用反射知道Foo<T>
的类型,则可以创建T
:
Type genericDefinition = typeof(Foo<>);
Type constructed = genericDefinition.MakeGenericType(A.MyType);
object instance = Activator.CreateInstance(constructed);
......但很快就会变得混乱。你还没有告诉我们你实际想要达到的目标,所以很难提出另一种选择 - 但如果你可以重新设计以避免这种情况,我会这样做。
第二个问题:我需要一个函数来指示是否可以减少'Type'
的变量
您可能正在寻找Type.IsAssignableFrom
,但目前尚不清楚......