Я не знаю, возможно ли это, и как это возможно. Я поясню хочу использовать это позже, что нравится:коллекция предметов, которые делают поля предметов в коллекции доступными
//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));
Контейнер будет использовать дженериков и Reflection я думаю. Класс контейнера должен «скопировать» все настраиваемые свойства T-класса (здесь Control) в себя. Поэтому, если я использую SetContainer<Control>
, я могу установить все значения backcolor в моем контейнере на 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);
}
}
Мне очень жаль, что я не знаю, как описать это хорошо понятно.
Какой объект является sContainer? Вы заранее знаете потенциальные свойства? –
sContainer недавно является экземпляром моего класса (второй фрагмент). Но в последнее время 'sContainer.BackColor' не используется (но я хочу использовать этот путь из-за более опечатки-безопасности ...). Недавно работает только' sContainer.SetValues'. – leAthlon
Почему эта часть кода не работает? В любом случае настройка свойств управления может иметь побочные эффекты. Я думаю, вы должны отказаться от этого подхода. – usr