C# 使用Type to";作为「;获取类对象的关键字
如何使用Type to“as”关键字获取类对象 以下是一个例子:C# 使用Type to";作为「;获取类对象的关键字,c#,C#,如何使用Type to“as”关键字获取类对象 以下是一个例子: class A { public string Test { get; set; } public Type Type { get; set; } } class B { public string F { get; set; } } public class Program { public static void Main(string[] args) { var
class A
{
public string Test { get; set; }
public Type Type { get; set; }
}
class B
{
public string F { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
var a = new A();
a.Type = typeof(B);
var getB = (a.Type)Activator.CreateInstance(a.Type);
getB.F = "Say something ...";
}
}
此代码不起作用。我正在尝试从Typeof获取类对象。您不能声明编译时未知类型的对象,正如您在此处尝试的那样:
var getB = (a.Type)Activator.CreateInstance(a.Type);
这应该起作用:
public static void Main(string[] args)
{
var a = new A();
A.Type = typeof(B);
var getB = (B)Activator.CreateInstance(a.Type);
getB.F = "Say something ...";
}
或作为操作员使用:
var getB = Activator.CreateInstance(a.Type) as B;
如果在编译时不知道实际类型,另一种选择是使用关键字:
您不能声明编译时未知类型的对象,正如您在此处尝试的那样:
var getB = (a.Type)Activator.CreateInstance(a.Type);
这应该起作用:
public static void Main(string[] args)
{
var a = new A();
A.Type = typeof(B);
var getB = (B)Activator.CreateInstance(a.Type);
getB.F = "Say something ...";
}
或作为操作员使用:
var getB = Activator.CreateInstance(a.Type) as B;
如果在编译时不知道实际类型,另一种选择是使用关键字:
C#是一种静态类型语言-必须在强制转换中指定实际类型-它不能是变量。或者,从另一个角度来看,编译器无法在编译时确定getB
的类型,因此代码是非法的。C#是一种静态类型的语言-必须在强制转换中指定实际类型-它不能是变量。或者,从另一个角度来看,编译器无法在编译时确定getB
的类型,因此代码是非法的。