我的班级中有“类型”类型的变量:
class A
{
public static Type MyType;
}
我用anywhere构造声明了这个变量。例子:
A.MyType = b.GetType();
第一个问题:我需要声明具有存储在 MyType 中的类型的新变量。
<MyType> myValue = new <MyType>;
第二个问题:我需要一个函数来指示“类型”的变量是否可以相互简化。
第一个问题:我需要声明具有存储在 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.IsAssignableFrom
,但不清楚...