G
Guest
Can someone tell me the correct method of casting and object at run time.
Here is a sample of what I'm trying to do. classA acts as a base for classes
that execute code in classes derived from ProBase. How do I property cast
the derived classes from ProBase during runtime so that I can access their
unique methods?
class abstract classA
{
public classA(ProBase pb)
{
this.Execute(pb);
}
public abstract void Execute(ProBase bp);
}
class classB : classA
{
public classB(ProBase bp) : classA(bp) { }
public override void Execute(ProBase bp)
{
System.Type type = bp.GetType();
((type)bp).DoIt();
}
}
class classC : classA
{
public classC(ProBase bp) : classA(bp) { }
public override void Execute(ProBase bp)
{
System.Type type = bp.GetType();
((type)bp).DoThis();
}
}
class ProBase
{
public ProBase() { }
}
class ProBaseA : ProBase
{
public ProBaseA() : ProBase() {}
public DoIt()
{
.... do something;
}
}
class ProBaseB : ProBase
{
public ProBaseB() : ProBase() {}
public DoThis()
{
.... do something;
}
}
main()
{
classB b = new classB(new ProBaseA());
classC c = new classC(new ProBaseB());
}
Here is a sample of what I'm trying to do. classA acts as a base for classes
that execute code in classes derived from ProBase. How do I property cast
the derived classes from ProBase during runtime so that I can access their
unique methods?
class abstract classA
{
public classA(ProBase pb)
{
this.Execute(pb);
}
public abstract void Execute(ProBase bp);
}
class classB : classA
{
public classB(ProBase bp) : classA(bp) { }
public override void Execute(ProBase bp)
{
System.Type type = bp.GetType();
((type)bp).DoIt();
}
}
class classC : classA
{
public classC(ProBase bp) : classA(bp) { }
public override void Execute(ProBase bp)
{
System.Type type = bp.GetType();
((type)bp).DoThis();
}
}
class ProBase
{
public ProBase() { }
}
class ProBaseA : ProBase
{
public ProBaseA() : ProBase() {}
public DoIt()
{
.... do something;
}
}
class ProBaseB : ProBase
{
public ProBaseB() : ProBase() {}
public DoThis()
{
.... do something;
}
}
main()
{
classB b = new classB(new ProBaseA());
classC c = new classC(new ProBaseB());
}