VB6のコードをC#にしたい
C#はこちらでよかったでしょうか。。カテゴリ違いだったらすみません。
現在、VB6にて書かれているコードを、C#にて置き換える事になりました。
しかし私はまともなオブジェクト指向の言語で組むのも初めてなら、C系の言語で組むのも初めてで、そこでどうすればいいのか困っています。
VB6で
sub aa(i as integer)
dim obj as object
call bb(obj,i)
call obj.run()
end sub
sub bb(byref pobj as object,i as integer)
select case i
case 1:
pobj = new obj1
case 2:
pobj = new obj2
end select
end sub
といったようなコードがあります。obj1とobj2はVBのクラスなのですが、メソッドはどちらも同じrunというものが用意されているとします。
ようは引数の値によって、メソッドやプロパティの形は同じだけれど、メソッドの中身が違うクラスをもらって、そのもらったクラスのメソッドを実行したいわけです。
しかしC#でまったく等価のソースをかくと、当然ながらobjはただのobject形なので、そんなメソッドはないとおこられてしまいます。VB6の場合、そのあたりが厳密でないので許されていたのですが。。。
こういった場合、どのようにソースをかけばいいのでしょうか?
やはりobj1,obj2のクラスの方に工夫しないといけないでしょうか?
実はこのオブジェクトを用意しているのが別チームの為、その場合こうしてくれと提案しなくてはなりません。もしそれがなくても可能であればそれにこした事はないのですが。。。
いちおうもらったクラスのタイプをしらべて、それごとにコードをかくという方法は思いついたのですが、それだとobj1、obj2にあたるクラス数が実は種類がたくさんあり、そこだけならまだしも、他にも同じようなコードをたくさんかかなくてはいけなくなってしまいます。
もう少しスマートにするにはどのようにすればいいでしょうか?
こういうクラス構成にすれば、とか教えていただければ助かります。
お礼
素早い回答ありがとうございます。 josyo_mさんのやり方で解決しました。 ありがとうございました。