Tag: 匿名方法

声明Func 动态

考虑一下: var propertyinfo = typeof(Customer).GetProperty(sortExpressionStr); Type orderType = propertyinfo.PropertyType; 现在我想宣布 Func 我知道它不可能直接因为ordertype是在运行时但有任何解决方法吗? 这正是我想要做的: var propertyinfo = typeof(T).GetProperty(sortExpressionStr); Type orderType = propertyinfo.PropertyType; var param = Expression.Parameter(typeof(T), “x”); var sortExpression = (Expression.Lambda<Func> (Expression.Convert(Expression.Property(param, sortExpressionStr), typeof(orderType)), param)); 这一切都是因为我想转换: Expression<Func> to Expression<Func> 或者如果它不可能那么我想从正确的类型的第一个地方创建它,案例如下: 我在一个方法里面有一个type(Customer)和一个我希望按其订购的类型的属性名称,我想创建一个排序表达式树来将它传递给Orderby (这里)。

离散匿名方法共享一个类?

我在这里和Eric Lippert的Ref课一起玩。 我注意到在IL中看起来两个匿名方法都使用相同的生成类,即使这意味着类有一个额外的变量。 虽然只使用一个新的类定义似乎有点合理,但令我感到奇怪的是,只创建了一个c__DisplayClass2实例。 这似乎意味着Ref两个实例都引用相同的c__DisplayClass2并不意味着在收集vart1之前无法收集y ,这可能比joik返回后发生得晚得多? 毕竟,不能保证一些白痴不会写一个函数(直接在IL中)直接访问y通过vart1 joik返回。 也许这甚至可以用reflection而不是疯狂的IL来完成。 sealed class Ref { public delegate T Func(); private readonly Func getter; public Ref(Func getter) { this.getter = getter; } public T Value { get { return getter(); } } } static Ref joik() { int[] y = new int[50000]; int x = 5; Ref vart1 […]