.NET 3.5 中 ExpandoObject 的替代品,开销最小
Posted
技术标签:
【中文标题】.NET 3.5 中 ExpandoObject 的替代品,开销最小【英文标题】:A substitute for ExpandoObject in .NET 3.5 with least overhead 【发布时间】:2011-06-24 10:54:36 【问题描述】:如何以最少的开销在 .NET 3.5 应用程序中模仿 ExpandoObject 的功能?到目前为止,我最好的方法是使用 Lin Fu 框架 (http://www.codeproject.com/KB/cs/LinFuPart2.aspx),但我认为可能会有更好的方法。
为了更好地了解我的目标,我的目标是根据MethodInfo
的参数动态创建类型。所以,基本上我想转这个:
public class ServiceObject
public void Execute(string TransformMeIntoAProperty);
进入
public class ServiceObjectExecuteSignature
public string TransformMeIntoAProperty get; set;
在运行时。我必须能够使用反射访问参数,因为我使用的是 Linq 表达式。
【问题讨论】:
【参考方案1】:您可以使用 CodeDom 在运行时动态编译一些新类型。显然,这样做是有前期成本的……我想这取决于您生成的类型的生命周期。
http://www.codeproject.com/Articles/26312/Dynamic-Code-Integration-with-CodeDom
http://www.c-sharpcorner.com/uploadfile/mgold/codedomcalculator08082005003253am/codedomcalculator.aspx
http://igorshare.wordpress.com/2008/01/11/codedom-extensions-and-dynamic-linq-stringscript-to-linq-emitting/
【讨论】:
以上是关于.NET 3.5 中 ExpandoObject 的替代品,开销最小的主要内容,如果未能解决你的问题,请参考以下文章
ExpandoObject、DynamicObject 和 dynamic 的区别