【发布时间】:2016-02-22 19:25:09
【问题描述】:
假设我有某种类型:
public class General
{
public int Id;
public string Name;
public DateTime modified
}
假设我想要一些匿名功能过滤器:
public void DoWorkOnSubset(List<General> generals, params Func<general, object> properties)
{
}
如何获取属性列表并将其转换为匿名类型
generals.Select(x => new { properties.ForEach( p => p.Invoke(x)) });
【问题讨论】:
-
所以基本上是复制类型?你想用这个来达到什么目的?
-
匿名类型在编译时扩展为具体实现。
-
基本上我想要一个匿名类型的子集,但直到属性传入后我才知道
-
@Scorpion 你是说我不能使用匿名类型,因为它必须在编译时建立?
-
没有简单的方法可以做到这一点,您必须动态构建新类型。可以做到,但并不容易。使用反射获取现有类型的属性并使用
TypeBuilder动态构建类型。无论哪种方式,我都质疑您希望在这里完成什么,您将获得一个只能通过反射使用的对象。
标签: c# function lambda anonymous-function