ClassB型のパラメータをとる抽象メソッドを持つ抽象クラスClassAがあります。いくつかのクラスがそれから派生しています。次に、同様の機能を備えているが、いくつかのクラスを派生させるためにわずかに異なる基本ClassAを必要とする別のプロジェクトを追加します。主な違い:新しい基本クラスであるClassCは、引数としてClassBを使用するべきではありませんが、Bから派生した別のクラスであるClassDを使用する必要があります。その後、ClassCをいくつかのクラスでベースとして再度使用する必要があります。
これは可能ですか?これは、好奇心からの質問です。これを行うことで、ジェネリックで可能であることを私は知っています:
public abstract void Method1<T>(T parameter) where T : ClassB;
...
public override void Method1<ClassB>(ClassB parameter) {
ジェネリックなしでそれは可能ですか?そして、タイプを2回入力する必要があることを除けば、彼らには何か問題がありますか?
abstract class ClassA
{
public abstract void Method1(ClassB parameter);
}
class DerivingClasses1 : ClassA
{
public override void Method1(ClassB parameter)
{
// do something
}
}
// -------
abstract class ClassC : ClassA
{
// This would have to override Method1 of ClassA somehow,
// instead of overloading it.
public abstract void Method1(ClassD parameter);
}
class DerivingClasses2 : ClassA
{
public override void Method1(ClassD parameter)
{
// do something
}
}
// -------
class ClassB
{
}
class ClassD : ClassB
{
}