OK .. C#は私の得意分野ではなく、この種のことに頭を悩ませてからしばらく経ちましたが、いくつかのことを忘れてしまいました。 doはC#内で可能であり、アブストラクトとインターフェイスはすべて地獄にあると確信しています(インターフェイスを配置する方法すらわかりませんが、必要なことはわかっています)
これがシナリオです
//abstract parent class
abstract class ActionType
{
/***
* this is a parent class not meant to ever be instaciated
*/
public abstract void action();
}
class ActionTypeSync : ActionType
{
public override void action()
{
Debug.WriteLine("doing sync");
}
}
class ActionTypeRead : ActionType
{
public override void action()
{
Debug.WriteLine("doing read");
}
}
以下は機能しません
ActionType action = getActionType(1);
ActionType secondaction = getActionType(2);
[ 編集 ]
実際、私は短すぎました。エラーで機能しなかったのはこのビットです。
エラー引数1:「ActionType」から「ActionTypeSync」に変換できません
processThings(action);
//debug out put "doing sync"
processThings(secondaction);
//debug out put "doing sync"
public ActionType getActionType(int i)
{
if (i==1) return new ActionTypeSync();
if (i==2) return new ActionTypeRead();
}
public void processThings(ActionTypeSync action)
{
action.action();
}
public void processThings(ActionTypeRead action)
{
action.action();
}
[/ 編集 ]
これを再構築するためにどのように最善を尽くす必要がありますか..これは簡潔にするための例であることを理解してください(可能な限り)ここで要約しています-したがって、いくつかの原則はいくつかの「なぜなどの講義」よりも優れています:-)ありがとうあなた:-)私は多形原理に対応するために再構築することに反対しませんが、この基本的な多形インターフェース/クラス構造がそのまま必要です