没有反思,有更好的方法吗?

时间:2011-07-21 20:48:32

标签: c# asp.net

我需要使用相同的函数设置类的所有属性。目前我使用反射来获取所有属性并循环来设置它们的值。我知道所有的属性,没有任何动态发生。

这是我目前在构造函数中运行的代码:

foreach (PropertyInfo property in this.GetType().GetProperties())
{
    // retreive the value and set it
    property.SetValue(this, GetValue(field), null);
}

有没有办法在不使用反射的情况下做类似的事情?

2 个答案:

答案 0 :(得分:4)

根据此处提供的信息,我并不知道。

那就是说,它确实提出了一个问题,你在做什么需要你这样做?为什么你需要在循环中遍历所有属性,你有多少?

更多细节可能会促使某人为您提供更好的解决方案。例如,什么属性在做什么?它们是否连接到一些可以在不使用反射的情况下更改的基础数据?如果你有很多离散属性,那么它们有很多不同的属性吗?

答案 1 :(得分:1)

嗯,也许我误解了你在说什么,但是你说你知道所有的属性,为什么不写一个方法来设置它们呢?

void SetValues() {
    this.Property1 = field1;
    this.Property2 = field2;
    this.Property3 = field3;
    this.Property4 = field4;
}

我怀疑你的问题遗漏了什么。