mam abstrakcyjna klase bazowa (A) z walsciwoscia double (value)
oraz trzy klasy po niej dziedziczace (X,Y,Z)
w kazdej klasie dziedziczacej mam operatory:
implicit operator X(string) // czyli X x = "11X"
implicit operator X(double) // czyli X x = 1.23D
explicit operator Y(X) // czyli Y y = (Y)x
explicit operator Z(X) // czyli Z z = (Z)x
X operator +(X,X) // czyli X x = x1 + x2
X operator -(X,X) // czyli X x = x1 - x2
jednak chcialbym moc wykonac operacja X + Y - Z, bez koniecznosci rzutowania (bo to dziala: X + (X)Y - (X)Z)
chcialbym w mojej klasie bazowej A napisac operatory + i - tak aby automatycznie wykonywaly rzutowania/konwersje pomiedzy typami, czyli cos w stylu
public static object operator +(A a1, A a2)
{
return Activarot.CreateInstance(a1.GetType(), a1.value + (???)a2.value);
}
bo skoro juz mam operatory konwersji explicit, to chcialbym je jakos wykorzystac, aby nie pisac kolejny raz podobnego kodu
moge storzyc inna klase do konwercji miedzy typami (lub miec jakas funkcje w klasie bazowej), ale czy nie da sie jednak uzyc juz posiadanych operatorow uzywajac Reflection?