私は抽象クラスを持っています。このクラスには、基本クラスから継承するクラスのインスタンスを返すメソッドと、インターフェイスを実装するメソッドが必要です。特定の型を返すようにオーバーライドするメソッドを制限する
public abstract class AbstractClass
{
abstract [DonotKnowTheType] GetClassInstance() //The Return type should be an instance of a class which implements TestClass and ISample
}
public class ChildClass : AbstractClass
{
override [DonotKnowTheType] GetClassInstance()
{
//Need to return instance of SampleClass in this example. This could vary, this should be an instance of a class which implements TestClass and ISample
}
}
public class SampleClass : TestClass,ISample
{
//Implementation
}
良いデザインでこれを達成するのを手伝ってください。 ChildClassのオーバーライドメソッドを記述する開発者が、TestClassとISampleを実装するクラスのインスタンスのみを返すように制限する必要があります。そうでない場合は、コンパイル時エラーを表示する必要があります。
どのような方法がありますがこれを達成するの? – Azeeb
正直なところ、これは理由がない、これはちょうど悪いAPIデザインです。 –
@FilipCordas私はそのAPIが常に悪くないわけではないと思っています。例えば、流暢なAPIデザインは、このような機能に大きな利益をもたらすことができます。 –