Mam klasę Point, która reprezentuje kartezjański układ współrzędnych do mojej gry.
W ramach nauki grę chcę napisać w kilku technologiach. Do tego nie chcę za każdym razem powtarzać kodu tak więc pomyślałem o polimorfizmie! Jednak napotkałem problem:
interface IPoint<T> where T : ValueType // Nie działa
T X { get; set; } // nie można ustawić modyfikatorów dostępu!
.
.
.
class Point<T> : IPoint<T>
where T : ValueType // nie działa!
public T X {get;set; }// działa lecz
public T X {get; protected set } // nie działa!
// Działa gdy w IPoint jest tak:
T X {get;}
// wtedy
public T X {get; protected set; } // działa, ale nie wiem dlaczego i jakie to będzie miało skutki.
// nie mogę dodać dwóch typów. W interfejsie nie można użyć operatorów więc w klasie:
public static Point<T> operator +(Point<T> p1, Point<T> p2)
... p1.X + p2.X // nie można dodać typów "T"! - dlatego, że nie są ustawione jako valuetype?
I jeszcze jedno pytanie od strony projektowej.
Aplikacja będzie w konsoli, WPF, ASP.NET
tak więc cała logikę i "modele" chcę umieścić w osobnym projekcie.
Zrobić to jako bibliotekę .dll?