关于C#表达式树的建议
发布时间:2020-12-16 01:29:04 所属栏目:百科 来源:网络整理
导读:我正在研究一种接受表达式树作为参数的方法,以及类的类型(或实例). 基本思想是此方法将某些内容添加到将用于验证的集合中. public interface ITestInterface{ //Specify stuff here.}private static void DoSomethingT(ExpressionFuncT,object expression,pa
我正在研究一种接受表达式树作为参数的方法,以及类的类型(或实例).
基本思想是此方法将某些内容添加到将用于验证的集合中. public interface ITestInterface { //Specify stuff here. } private static void DoSomething<T>(Expression<Func<T,object>> expression,params IMyInterface[] rule) { // Stuff is done here. } 该方法调用如下: class TestClass { public int MyProperty { get; set; } } class OtherTestClass : ITestInterface { // Blah Blah Blah. } static void Main(string[] args) { DoSomething<TestClass>(t => t.MyProperty,new OtherTestClass()); } 我这样做是因为我希望传入的属性名称是强类型的. 我正在努力的几件事…… >在DoSomething中,我想获得T的PropertyInfo类型(来自传入的主体)并将其与rule []一起添加到集合中.目前,我正在考虑使用expression.Body并从“转换.([propertyname])”中删除[propertyname]并使用反射来获取我需要的东西.这看起来既麻烦又错误.有没有更好的办法? 谢谢! 伊恩 编辑: 表达式.Body.ToString()在DoSomething方法中返回的示例是一个字符串,如果从上面的示例调用,则包含“Convert(t.MyProperty)”. 我确实需要它是强类型的,所以如果我更改属性名称它将无法编译. 谢谢你的建议! 解决方法
从Expression.Body收集PropertyInfo对象看起来类似于
my solution到另一个问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |