C# TransparentProxies 和数组大小调整
Posted
技术标签:
【中文标题】C# TransparentProxies 和数组大小调整【英文标题】:C# TransparentProxies and Array Resizing 【发布时间】:2013-06-25 15:01:36 【问题描述】:我有一个 System.Runtime.Remoting.Proxies.__TransparentProxy 类型的 C# 对象,它是远程 Profile 类的代理。
我的 Profile 类有一组警报。
我正在向 Profile 类添加另外两个警报。这在本地有效,但是由于警报是作为数组实现的,因此远程的 Length 是两个短。
如何调整远程数组的大小以便可以再存储两个项目?
我试过了:
Array.Resize( remoteProfile.profiles[i].alarms, NEW_SIZE );
remoteProfile.profiles[i] = new Profile(remoteProfile.profiles[i]);
复制构造函数创建一个具有适当大小的新配置文件。
remoteProfile.profiles[i].ResizeAlarms();
ResizeAlarms 创建一个新数组,复制旧值,然后将其分配给警报成员。
var newProfile = new Profile( remoteProfile.profiles[i] );
remoteProfile.profiles[i].alarms = newProfile.alarms;
有什么建议吗? (这是在 C# 2.0 中。)
【问题讨论】:
【参考方案1】:我终于解决了这个问题。注意未来的 Google 访问者。
问题来自将自身标识为“system.runtime.remoting.proxies.__transparentproxy”的对象。无论出于何种原因,我都无法像普通对象一样修改它们。
幸运的是,在我的情况下,该对象只复制了一次,然后就被忽略了。
因此,为了解决这个问题,我为对象的类创建了一个复制构造函数,它复制了所有内容。然后我使用了theProfile = new Profile(remoteProfile);
。这使我可以根据需要访问和修改内容。
【讨论】:
以上是关于C# TransparentProxies 和数组大小调整的主要内容,如果未能解决你的问题,请参考以下文章