在处理所有输入字段的更改事件时,可以使用事件委托来避免直接引用字段。以下是一个示例解决方案:
using System;
public class InputField
{
public event Action OnValueChanged;
private string value;
public string Value
{
get { return value; }
set
{
this.value = value;
OnValueChanged?.Invoke(value);
}
}
}
public class UIManager
{
private InputField inputField1;
private InputField inputField2;
public UIManager()
{
inputField1 = new InputField();
inputField2 = new InputField();
inputField1.OnValueChanged += HandleInputField1ValueChanged;
inputField2.OnValueChanged += HandleInputField2ValueChanged;
}
private void HandleInputField1ValueChanged(string value)
{
Console.WriteLine("InputField1 value changed: " + value);
// 处理字段1的更改事件
}
private void HandleInputField2ValueChanged(string value)
{
Console.WriteLine("InputField2 value changed: " + value);
// 处理字段2的更改事件
}
}
public class Program
{
public static void Main(string[] args)
{
UIManager uiManager = new UIManager();
// 模拟输入字段更改
uiManager.HandleInputField1ValueChanged("New value 1");
uiManager.HandleInputField2ValueChanged("New value 2");
}
}
在上述示例中,InputField类定义了一个OnValueChanged事件,当Value属性更改时,会触发该事件并将新的值作为参数传递给订阅该事件的处理方法。UIManager类订阅了inputField1和inputField2的OnValueChanged事件,并通过相应的处理方法来处理字段的更改事件。通过使用事件委托,UIManager类不直接引用字段,而是通过处理方法来处理字段的更改事件。这样可以实现解耦和更好的代码可维护性。