我想实现一个为不同控件存储不同外观的类。起初我想使用泛型,例如:
public class Appearance<T where T : Control> { ... }
但有两个问题。首先,我想在不同控件的列表中使用这些外观,即不同的 T(在这种情况下是不可能的)。其次,每种控件类型的外观将根据它所引用的控件具有不同的属性。所以解决方案是每个控件类型的基类(最好是抽象的)和派生类:
abstract class Appearance { ... }
public class TextBoxAppearance : Appearance { ... }
public class ComboBoxAppearance : Appearance { ... }
我现在的问题是我想实现对控件类型的封装,每个类都关心,即:
public abstract class Appearance {
public abstract void updateAppearanceOf(Control control);
}
public class TextBoxAppearance : Appearance {
public void updateAppearanceOf([here I want to give TextBox instead of Control])
{
// implement update of TextBox
}
}
public class ComboBoxAppearance : Appearance {
public void updateAppearanceOf([here I want to give ComboBox instead of Control])
{
// implement update of ComboBox
}
}
这可能吗?