其他分享
首页 > 其他分享> > CodeGo.net>如何在对象的表达式中分配一个表达式?

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