【发布时间】:2015-08-04 06:14:24
【问题描述】:
有没有办法将类“成员”作为一等值传递?
public class Bike {
public Color BikeColour { get; set; }
public bool IsGirlsBike { get; set; }
}
然后我想引用字段名称,没有任何对象的概念。
我想我想要的是一个枚举之类的东西:
public enum BikeFields {BikeColour, IsGirlsBike};
但没有明确定义。
有没有办法在 C# 中做到这一点?
编辑:抱歉如此含糊;我希望能够将类成员称为一流的事物(几乎就像绑定类型)。
Set<Bike:T> whichFieldsHaveBeenDrawn = new Set<Bike:T>();
Bike:T 未定义,我希望下图能清楚地说明这种新类型的工作原理。
whichFieldsHaveBeenDrawn.Include(Bike.BikeColour);
var remainingFields = Set.Subtract(Bike.GetAllFields(), whichFieldsHaveBeenDrawn);
Bike b = new Bike();
foreach (var field in remainingFields) { Draw(field, b); }
我想我可以通过反射来做到这一点,但我希望它们在编译时合格......
【问题讨论】:
-
你将如何在你的代码中使用它们?
-
您要解决什么问题,这个“枚举”将成为解决方案的一部分?目前这有点太抽象了。你已经用反射标记了这个,所以我假设你知道反射可以做什么(例如
MemberInfo) -
您的问题在当前形式下毫无意义。需要更多细节。
-
请查看已编辑的问题 -
-
如上所述,您可以使用反射来获取属性的名称,然后与 EnumBuilder 结合,您可以动态创建枚举(参见stackoverflow.com/a/24804723/174929)
标签: c# .net reflection metadata