CodeGo.net>如何在对象的表达式中分配一个表达式?
作者:互联网
这将非常简单.
public class ModelMapNode { }
public class ModelMapNode<TModelMap> : ModelMapNode { }
public class ModelMapView { }
public class ModelMapView<TModelMap> : ModelMapView
where TModelMap : ModelMapNode
{
public ModelMapView()
{
this.RemovedProperties = new List<Expression<Func<TModelMap, object>>>();
}
public List<Expression<Func<TModelMap, object>>> RemovedProperties { get; private set; }
public void RemoveNode<TNodeModelMap>(Expression<Func<TModelMap, TNodeModelMap>> expression)
where TNodeModelMap : ModelMapNode
{
this.RemovedProperties.Add(expression);
}
}
从理论上讲,可以在对象中分配任何泛型类型.但是我这样做的方式,分配是无效的.
我无法将Expression< Func< T,T2>>在表达式< Func< T,对象>中.
有可能的?
解决方法:
我不确定您要在这里完成什么(您还没有解释为什么您需要存储比通过API公开的类型更弱的类型),但是可以按照要求回答您的问题,您可以执行以下操作:
Expression<Func<TModelMap, TNodeModelMap>> source = ...
var convertedBody = Expression.Convert(source.Body, typeof(object));
var convertedExpression = Expression.Lambda<Func<TModelMap, object>>
(convertedBody, source.Parameters);
RemovedProperties.Add(convertedExpression);
标签:assign,expression,c,net,expression-trees 来源: https://codeday.me/bug/20191122/2059074.html