- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何“编译”NewExpression
实例化指向的 new
表达式?
我是否必须手动构建对象,或者我可以将构建的对象作为参数获取?
很快就会用一个例子来更新我的问题。
class Obj
{
public async Task ParseAsync<TObj>(Expression<Func<TObj, Task>> pointedMethod)
{
var method = pointedMethod.Body as MethodCallExpression;
var arg = method.Arguments[0];
var newExp = arg as NewExpression;
//This is what I need:
User = newExp.ConstructObject();
await Task.FromResult((object)null);
}
public async Task MyMethod(User user)
{
await Task.FromResult((object)null);
}
}
static void Main(string[] args)
{
var obj = new Obj();
obj.ParseAsync<Obj>(o => o.MyMethod(new User())).Wait();
}
注意事项:在执行时,不会有对 TObj
的正确引用,必须仅根据提供给 ParseAsync
函数的参数构造该项目。
由于我有一个 NewExpression
,这意味着该对象(在我的示例中为 User
)能够被构造。
问题是是否有一种方法可以实例化对象而无需手动查找构造函数并调用它等。
最佳答案
答案最初由@ dasblinkenlight 回答,我不知道他为什么删除它,它只是起作用了。无论如何,如果他选择取消删除他的答案,我会删除我的并归功于他!
无论如何供引用:
The answer depends on whether or not the NewExpression in question references any parameters, and if you have access to these parameter expressions in case it does.
If NewExpression has no parameters, simply construct a lambda expression from it, compile, and run:
NewExpression myNewExpression = ... // You have this
var instantiator = (Func<MyResultType>)Expression
.Lambda<Func<MyResultType>>(myNewExpression)
.Compile();
MyResultType res = instantiator();
关于c# - 解析 Linq.Expressions.NewExpression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42321698/
假设这个表达式: Expression> exp = dt => new { dt.Second, dt.Hour, dt.Date.Day }; 我需要获取以下内容:"Second", "Hour"
我有这个代码: public static Func CreateBinder() { NewExpression dataTransferObject = Expression.New(ty
NewExpression.Members 是否告知 LINQ 运行时如何将类型的构造函数参数映射到其属性?如果是这样,是否有设置映射的属性?我在想象这样的事情: public class Custo
我如何“编译”NewExpression实例化指向的 new 表达式? 我是否必须手动构建对象,或者我可以将构建的对象作为参数获取? 很快就会用一个例子来更新我的问题。 class Obj { p
根据this SO post ,CallExpression 始终包含调用,因此不能成为 new 运算符后面的表达式的一部分。 但是,ECMAScript 2017状态: MemberExpressi
尝试从mongodb检索对象时出现错误: InvalidOperationException: Can't compile a NewExpression with a constructor dec
我是一名优秀的程序员,十分优秀!