У меня проблема с делегатом в классе над проектом, над которым я работаю. Класс - это GUI-компонент, который принимает и метку, и значение. Идея состоит в том, что пользователь может указать метку, а затем связать значение из любого места (более конкретно, метод ToString этого значения), чтобы каждый раз, когда это значение обновлялось, компонент GUI также был. Вот основные принципы его настройки:
public delegate string GUIValue();
public class GUIComponent
{
GUIValue value = null; // The value linked in
string label = ""; // The label for the value
string text = ""; // The label and value appended together
public GUIComponent(string Text, GUIValue Value)
{
this.text = Text;
this.value += Value;
}
public void Update()
{
this.text = this.label + this.value();
}
}
А потом я называю это так
GUIComponent component = new GUIComponent("Label: ",
new GUIValue(this.attribute.ToString));
Код компилируется правильно, компонент отображается и отображает начальное значение для данного атрибута, однако он не обновляется при изменении значения атрибута.
Мой вопрос заключается в том, правильно ли я вообще настроил это, и если да, то почему это не сработало. Сначала я думал, что он принимает только первое значение, возвращаемое методом ToString, поскольку он не принимает никаких аргументов, но может ли кто-нибудь это проверить?