.NET5+迁移后,继承MarshalByRefObject的类是否需移除该继承?
WPF迁移至.NET5+时MarshalByRefObject的处理建议
结合你描述的场景——代码库无多应用域使用、.NET5+已移除远程处理功能,直接给出明确建议:
1. 是否应该/可以完全移除对MarshalByRefObject的继承?
完全可以,甚至推荐直接移除。
MarshalByRefObject的核心价值就是支撑跨应用域或远程处理场景下的对象引用传递,既然当前既没有多应用域的使用,依赖它的远程处理功能也被.NET5+砍掉了,继承这个类完全是冗余的,只会增加代码的认知负担,没有任何实际作用。只要你确认代码里没有任何和跨域/远程调用相关的逻辑依赖,移除继承不会影响现有功能。
2. 是否应保留继承仅移除InitializeLifetimeService()/GetLifetimeService()方法?
没必要保留继承。
MarshalByRefObject在.NET5+里没有其他可用的实用功能,你之前重写InitializeLifetimeService()返回null,原本是为了让远程对象永不过期,但现在远程处理已经不存在,这个方法也失去了意义。保留继承只会留下无用的代码壳子,没有任何收益。
操作建议
直接删除类继承列表中的MarshalByRefObject,同时删掉重写的InitializeLifetimeService()和GetLifetimeService()方法(如果存在),之后运行测试确认应用功能正常即可。
内容的提问来源于stack exchange,提问作者Nick W
相关产品推荐
相关产品推荐

