class StyleProperty<T>
{
static readonly StyleProperty<Object> INHERIT ;
T value;
public T Value
{
get { return this.value; }
set { this.value = value; }
}
}
Hello..
The above class sometimes should have the value INHERIT when value should not be used.. As
c# doesnt allow overloading Properties i cant set Value=StyleProperty.Inherit. i must be of type T.
Any idea what to do there?
After reading your comments, what about this:
Your first problem is how should the inherited value flow into the concrete instance? The only way i can think of would be the constructor. If the user doesn’t like this value he can simply change it (to maybe the same value).
If you would use for inheritance some kind of global variable (but that wouldn’t be inheritance, that would be a default value) you could also think about using a boolean flag which will be checked in the getter to find out if the backing store or the default should be used and it will set always to the opposite of its initial state within the setter.
Update
To get a skin support into your application i think you need to take a different approach. All forms and gui controls you are using should implement some kind of interface (e.g.
ISkin). Also your application should have some kind ofSkinSelector. This one holds all informations about coloring, fonts, etc and it also gets a reference to the MainForm. Within the constructor it recursively runs through the Controls property of the form and checks if there are any controls implementing your interface (simply usingas ISkinand check fornull). If it is skinnable, simply set the colors, fonts, etc. of the control as defined within youSkinSelector. Sounds quite easy but the problem is, that you have to derive all gui controls and add your interface to them. So this is not such a complicated thing, but maybe a lot of work. Maybe you can test if Generics can help you out by using aSkinWrapper<T> where T : Controland an extension function likeISkin ToSkinnableControl(this Control control)). But this will only work if you need to change a few common properties, that are the same for all controls. If you need more skin control e.g. for the DataGridView or a ComboBox i think derivement is the only way to help you out.