如何在动态类型上执行字符串路径?
是否可以在动态类型上执行字符串路径?
例如,我们可以编写动态类型
dynamic d = myObj;
var v = d.MyMethod(1,"text").SomeProperty.Name
现在假设我有字符串路径
string path = "MyMethod(1,\"text\").SomeProperty.Name";
var v = d. //How to applay string path to this type?
Is it possible to execute string path on dynamic type?
For example having dynamic type we can write
dynamic d = myObj;
var v = d.MyMethod(1,"text").SomeProperty.Name
Now imagine I have string path
string path = "MyMethod(1,\"text\").SomeProperty.Name";
var v = d. //How to applay string path to this type?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我有使用扩展方法和反射的解决方案,您需要针对不同的场景进行优化和测试。
编辑
仍然是脏代码,但现在支持重载方法。我将尝试进行代码清理并使用正则表达式来获得有效且更干净的解决方案
您现在可以为 eval 方法指定参数的数据类型。
请注意类型名称中的下划线。如果方法没有重载,这应该可以在不提及数据类型的情况下工作。当前限制,您不能在字符串参数值内使用冒号或逗号。 :(
调用
var v = d.Execute(path)
I have solution using extension method and reflection, you need to optimize and test for different scenario.
EDIT
Still dirty code, but supports overloaded method now. I will try to do code clean up and use regex for effective and cleaner solution
You can specify data types for parameters now to the eval method.
Note underscore in type names. This should work without mentioning datatypes if method are not overloaded. Current restriction, you cannot use colon or comma inside string parameter value. :(
Call like
var v = d.Execute(path)
看来你需要一个 eval 函数,而 C# 没有,但是如果这个第三方C# eval 实现 可以处理
动态
它可能会解决您的问题。It seems you would need an eval function and C# has none but if this third party C# eval implementation can handle
dynamic
it might solve your problem.