ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 跨AppDomain边界代理匿名对象

2019-06-26 15:54:53  阅读:219  来源: 互联网

标签:c proxy razor anonymous-types appdomain


我正在努力为RazorEngine vNext提供的最需要的功能之一是支持在单独的AppDomain中加载模板程序集,因此我们可以在需要时卸载程序集.很棒的功能请求,但它具有对可以注入模板的可能模型类型引入约束的连锁效应.

当前v2.1版本的一个很好的功能是能够使用匿名类型作为模型.我们确定模板中的模型类型是匿名类型,并将基本模板设置为TemplateBase< dynamic>.运行时绑定程序为我们处理模型成员的后期绑定调用.一切都很好.

当我们在单独的AppDomain中引入对运行模板的支持时,我们现在有一个约束,即模型只能是[Serializable]的类型(通过继承MarshalByRefObject来暗示).匿名类型不是可序列化的,也是私有的.

我的想法是以某种方式在模板库中创建一个代理模型(声明为动态),它调用模型的调用(它将在调用域中,而不是模板运行的域).在本质上:

模板:

<h1>@Model.Name</h1>

对@ Model.Name的调用将执行以下操作:

Template.Model (ModelProxy) -> GetMember(Name) -> |BOUNDARY| -> Model.Name

有没有人知道或者有尝试代理对另一个AppDomain中的匿名(或动态对象)的调用的最佳方法的经验?

重要的是,我不是试图通过AppDomain边界推送匿名对象,这是无法做到的.

解决方法:

好.假设您了解反射并创建新的AppDomain.我知道你知道怎么办…

标签:c,proxy,razor,anonymous-types,appdomain
来源: https://codeday.me/bug/20190626/1295440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有