Rzutowanie klasy bazowej na klasę dziedziczną

0

Mam klasę bazową i dziedziczącą po niej:

class A
{
	public int Val1;
	public int Val2;
}

class B : A
{
	public int Suma()
	{
		return Val1+Val2;
	}
}

i teraz bym chciał mając obiekt klasy A, przekształcić go w obiekt klasy B, tak aby używać dodaną przeze mnie metodę.
Problem jest w tym, obiekt klasy A dostaje jako wynik innej metody i nie mogę edytować struktury klasy A.
Np.

A a = Utils.CreateA();
B b = (B) a;

Tylko, że to zwraca wyjątek, że nie można rzutować.

0

Stworz konstruktor w klasie B przyjmujacy za argument obiekt typu A, ktory stworzy odpowiadajacy mu obiekt typu B.

0

chyba dałem zły przykład :)
Val1 i Val2 powiedzmy że są tylko do odczytu.

Albo powiem dokładnie, o co mi chodzi....
Jest sobie TcpClient i jest sobie metoda TcpClient.GetStream(), która zwraca NetworkStream.
Ja stworzyłem sobie klasę MyNetworkStream bazującą na niej. Zawiera ona tylko kilka upraszczających mi życie metod.
No i w tym konstruktorze nie mogę np. przepisać Socketu z klasy bazowej, bo jest to właściwość tylko do odczytu.

0

No to stworz cos na wzor Dekoratora. Czyli niech twoja klasa MyNetworkStream bedzie opakowaniem dla NetworkStream (bedac jednoczesnie tego samego typu). Stworz konstruktor dla swojej klasy z parametrem NetworkStream i zapamietuj referencje do tego obiektu. Nastepnie wszystkie tak samo dzialajace metody przekierowuj wprost do referencji (zeby zrobila co ma zrobic), a w nietypowych metodach rob co masz robic posilkujac sie ewentualnie zapamietana referencja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1