【问题标题】:Cast to type dynamically from string name of type从类型的字符串名称动态转换为类型
【发布时间】:2011-06-09 15:25:33
【问题描述】:

所以我正在制作一个游戏制作编辑器,编码人员将能够在其中制作一个 DLL,其中包含一个派生自特定基类的类(比如说行为)。他们将他们的 DLL 放在插件文件夹中,主游戏制造商 exe 会加载所有这些 DLL。

他们的类可以具有属性,当他们将其实例分配给游戏对象时,他们可以设置属性的初始值。这一切都是通过网格完成的,并使用反射来检查类的属性。

当他们想要重新打开游戏制作器项目或运行游戏时,当然必须将其保存到文件中以便重新加载。理想情况下,主 exe 能够读取此数据并将保存的值转换为正确的属性类型。

我也不想要求这些 DLL 的程序员对每种类型都使用动态。那么这可能吗?

【问题讨论】:

    标签: .net dynamic types


    【解决方案1】:

    你为什么不添加一个接口来序列化/反序列化数据到任何...json、xml、二进制文件并将它们保存在某个地方?

    【讨论】:

    • 这将要求 DLL 的程序员根据他们的类型来处理这个问题,对吧?我只是想通过让主 exe 处理这一切来让他们更轻松。基本上,他们需要知道的是,他们公开的任何公共属性都可以让用户修改它的值,并且可以将其保存到磁盘/从磁盘保存,而无需他们做任何事情。理想情况下。
    • 能够让它为属性工作: string propName = "WalkSpeed";字符串 propValue = "5.5";类型 t = typeof(Controller);行为 b = (Behavior)Activator.CreateInstance(t); PropertyInfo prop = t.GetProperty(propName);字符串类型 = prop.PropertyType.ToString(); prop.SetValue(b, Convert.ChangeType(propValue, Type.GetType(type)), null);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2011-06-29
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多