项目的集合,使项目的字段可以作为集合访问

时间:2015-09-11 09:43:01

标签: c# generics reflection

我不知道这是否可能,以及如何做到这一点。我基本上想稍后使用它,如:

//setting a single item as known.
label1.BackColor=Color.FromARGB(255,255,255);
/*setting multiple items in something like a container (wanted, not yet possible)*/
sContainer.BackColor=Color.FromARGB(255,255,255);
//and that's how it works recently with my class...
sContainer.SetValues("BackColor",Color.FromARGB(255,255,255));

我猜想容器必须使用泛型和反射。 容器类应该将T-Class(此处为Control)的所有可设置属性“复制”到自身中。因此,如果我使用SetContainer<Control>,我可以通过sContainer1.BackColor=...在我的容器中设置所有背景颜色值。

直到知道我的代码看起来像:

public class SetContainer<T>:IList<T>
{
/*I've implemented all methods of IList by using the elements-List*/
private List<T> elements;
public void SetValues(string propname,object value)
    {
     FieldInfo f=typeof(T).GetField(propname);
     elements.ForEach(x=>f.SetField(x,value);
    }
}

对不起,我不知道怎么形容这个可以理解。

1 个答案:

答案 0 :(得分:0)

通过使用this的修改版本,您可以将泛型类的属性“链接”到容器类。

这使得可以将一个值应用于整个值集合。

谢谢@Sagi!