百度上搜索C# 如何父类运行时转换成子类,没有得到相应答案,突然想起C# 有dynamic类型试试看结果成功了。。。
以后编写代码类似这样的代码 就可以删减掉了
if (en.type == EMapEntity.Construction) { en.construction = new ConstructionPOD(); } if (en.type == EMapEntity.Creature) { en.creature = new CreaturePOD(); }
using System; using System.Reflection; class BaseOrm { public int hp = 10; } class RoleOrm : BaseOrm { public string name = "盘子脸"; } class Program { static void Main(string[] args) { string scriptName = "RoleOrm"; Assembly a = Assembly.GetExecutingAssembly(); Type t = a.GetType(scriptName, true); dynamic obj = Activator.CreateInstance(t); Console.WriteLine(obj.hp); Console.WriteLine(obj.name); RoleOrm r = obj; r.name = "plateface"; Console.WriteLine(r.name); Console.ReadLine(); } }