EDIT:
Hieronder stond eerst heel iets anders. Ik heb dit veranderd omdat de oplossing voor het probleem wat ik heb ook met het overriden van methods kan. De topic titel zou dan ook veranderd kunnen worden in:
[c# .NET] Overriden van een method in een derived class
Ik heb het volgende.
en
Maar als er nu een Exceptie optreed in CChannel dan krijg ik als output dus "BOOOOOOOOOOOE".
maar wat is nu het verschil tussen het bovenstaande en het volgende:
en dit geeft netjes B.G als uitput.
Ik wil dus dat in het geval van een failed connectie er een bepaald gedrag plaats vind. Dit gedrag kan alleen per channel verschillen(ik heb verschillende soorten kanalen). Dit wilde ik eerst oplossen met events, maar dit kan dus ook door het overriden van de connectionFailed() methode. Dit is aangetoond met het simpele l test projectje waarvan de code hierboven staat.
Hieronder stond eerst heel iets anders. Ik heb dit veranderd omdat de oplossing voor het probleem wat ik heb ook met het overriden van methods kan. De topic titel zou dan ook veranderd kunnen worden in:
[c# .NET] Overriden van een method in een derived class
Ik heb het volgende.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public class CChannel{
public void endConnect(IAsyncResult aRes)
{
//end connect op de huidige socket om de beginconnect af te ronden.
try
{
//connect statements
}
catch(SocketException se)
{
log(se.Message);
connectionFailed();
rConnect();
}
}
public virtual void connectionFailed()
{
log("BOOOOOOOOOOOE");
}
} |
en
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class CUserChannel : CChannel{
public bool rConnectToServer()
{
base.rConnect()
}
public override void connectionFailed()
{
System.Console.WriteLine("YIHAAAAAAAAAAAAAAA");
}
} |
Maar als er nu een Exceptie optreed in CChannel dan krijg ik als output dus "BOOOOOOOOOOOE".
maar wat is nu het verschil tussen het bovenstaande en het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
| public class A
{
public A(){}
public void callG(){g();}
public virtual void g()
{
System.Console.WriteLine("A.G");
}
} |
code:
1
2
3
4
5
6
7
8
9
10
| public class B: A
{
public B(){callG();
}
public override void g()
{
System.Console.WriteLine("B.G");
}
} |
en dit geeft netjes B.G als uitput.
Ik wil dus dat in het geval van een failed connectie er een bepaald gedrag plaats vind. Dit gedrag kan alleen per channel verschillen(ik heb verschillende soorten kanalen). Dit wilde ik eerst oplossen met events, maar dit kan dus ook door het overriden van de connectionFailed() methode. Dit is aangetoond met het simpele l test projectje waarvan de code hierboven staat.
[ Voor 91% gewijzigd door yrew op 05-10-2004 16:09 ]
Groetjes