【发布时间】:2011-08-03 03:57:18
【问题描述】:
我有以下具有表达式属性的类:
public class ClassWithExpression
{
public Expression<Func<SomeAbstractBaseClass, object>> SomeExpression { get; set; }
}
我需要一个能够处理SomeAbstractBaseClass 的所有子类和所有类型的属性选择器(int、string、decimal 等)的表达式。最终,表达式将被传递给像 OrderBy 这样的 linq 扩展方法。就目前而言,它将我锁定在仅出现在基类上的属性中。 object prop 选择器在尝试传入除字符串 prop 之外的任何内容时都会出现问题。
我可以接受...
public class ClassWithExpression
{
public Expression SomeExpression { get; set; }
}
...但没有强制表达式基于SomeAbstractBaseClass 的子类。另外,我不确定如何将这样的表达式传递给 OrderBy 扩展方法。
任何帮助都将不胜感激,即使它完全改变了方向。 :)
编辑:
对不起,我之前没有提到,但我不能使用泛型来解决这个问题。不幸的是,我不知道编译时的类型。
【问题讨论】:
-
啊,好吧,如果您在编译时不知道类型,那么您就不能真正利用强类型,对吗?恐怕你必须使用基类(或对象)。
-
是的,越来越清楚了。
-
我不确定它是否符合您的要求,但您可以查看
dynamic。 -
我完全改变了方向。我希望我可以删除这个问题,但你们已经回答了。 :)
-
不用担心。如果悬而未决的问题真的让您感到困扰,您可以添加自己的答案并接受它,或者将其标记以供版主注意以将其关闭
标签: c# linq expression