我想调用一个期望像这样传递参数的方法:
我可以在运行时创建一个类型,该类型具有与所需匿名类型相同的“签名”(这是正确的单词吗?),但问题是:我如何从中构造此lambda表达式?特别是Expression.New让我感到困扰,因为我需要将ConstructorInfo传递给它,而我必须从现有类型(可以是匿名类型,但我无法在运行时创建匿名类型。或者有没有办法做到这一点?)中获取它。
更新(根据评论请求提供一些上下文)
我要调用的方法是:
我想要这样做的原因是,自动将继承于某个基类的实体的导航属性包含该基类的键作为外键。由于一个实体可以有多个任意类型的键字段,所以TKey类型只能在运行时确定。
Expression<Func<sometype, 'a>> expr
我需要在运行时构建这个参数,因为在此之前我不知道匿名类型会是什么样子的;它可能具有任意数量的字段:
x => new { a=x.a, b=x.b, c=x.c, etc... }
我可以在运行时创建一个类型,该类型具有与所需匿名类型相同的“签名”(这是正确的单词吗?),但问题是:我如何从中构造此lambda表达式?特别是Expression.New让我感到困扰,因为我需要将ConstructorInfo传递给它,而我必须从现有类型(可以是匿名类型,但我无法在运行时创建匿名类型。或者有没有办法做到这一点?)中获取它。
更新(根据评论请求提供一些上下文)
我要调用的方法是:
DependentNavigationPropertyConfiguration.HasForeignKey<TKey>(Expression<Func<TDependentEntityType, TKey>> foreignKeyExpression)
我想要这样做的原因是,自动将继承于某个基类的实体的导航属性包含该基类的键作为外键。由于一个实体可以有多个任意类型的键字段,所以TKey类型只能在运行时确定。