0

上下文:在对象的描述文件更改时重新加载对象的非侵入式方法

在此处输入图像描述


重点:添加对现有代码库的最小更改的对象的动态重新加载

FileSystemWatcher由或类似调用的函数:

void OnFileChanged(string filename, ...)
{
  var old3 = GetAssetByFilename(filename);
  var new3 = LoadAsset(filename);
  ...
  Utils.CopyFields(new3, old3);
  ...
}

笔记:

  • 克隆不起作用,因为所有对象都指向旧副本
  • 有多个相似的资产列表
  • 改变LoadAsset功能是不行的,有多个Load*功能要改变
  • 换班Asset是不行的
  • 复制必须包括私有字段等。

问题:如何自动复制字段(或者有更好的方法来做到这一点)?

4

1 回答 1

2

这似乎可以完成这项工作:

public static class Utils 
{
    public static void CopyFields<T>(T source, T destination)
    {
        var fields = source.GetType().GetFields();
        foreach(var field in fields)
        {
            field.SetValue(destination, field.GetValue(source));    
        }            
    }
}
于 2014-03-06T20:55:48.670 回答