使用属性与传统获取属性

时间:2011-07-23 06:15:52

标签: c# reflection conventions

我需要找到特定对象的所有属性,这些属性不是只读的,并且基于它们的类型做某事 我的意思是如果属性的类型是int我需要做某事,如果它是字符串我应该做其他事情

使用反射并获得此类型,并且通常我可以创建一个可以做我想要的对象 例如,如果属性类型是Int,我可以创建一个IntType实例:IType类

但我还有另一种选择:为每个属性设置一个属性,并根据这些属性找到合适的IType 我只是不能决定哪一个更好?

1 个答案:

答案 0 :(得分:2)

如果您需要的所有信息都已包含在属性的类型中,我看不出如何引入新属性是一个好主意。除此之外,您可以轻松忘记在数据类型更改时更新属性。你从:

开始
[Int32Type]
int Foo { get; set; }

然后发现你确实需要它成为long,但忘记更改属性:

[Int32Type]
long Foo { get; set; }

现在你可能会对它做错了。

如果您真的添加信息 - 例如如果不是所有 int属性需要以同样的方式对待 - 这是另一回事。