次の状況を示します。次のように私はのHttpRequestの単一パラメータを取りプロセスと呼ばれる単一抽象メソッドとコントロールと呼ばれる抽象クラスを持っているC#でのダイナミックキャスティング
<Form>
<Control Type="Text" Name="FirstName" />
<Control Type="DateTime" Name="DateOfBirth" />
<Control Type="Text" Name="PlaceOfBirth" />
</Form>
、XMLドキュメントを持っています。私はまた、TextControlとDateTimeControlというControlから派生した2つのクラスを持っています。 TextとDateTimeの両方が独自の実装を提供するProcessメソッドをオーバーライドします。
私はまた、HttpRequest型の単一のパラメータを取るProcessメソッドと、XmlDocument型の単一のパラメータをとるコンストラクタを持つFormクラスを持っています。
Formの新しいインスタンスが作成され、上記のXmlがXmlDocumentパラメータ(文字列からXmlDocumentにどのように取得されるかは関係ありません)を介して渡されます。私はちょうど作成したフォームのインスタンスのProcessメソッドを呼び出し、期待どおりHttpRequest型のパラメータを渡します。
これまでのところすべて良いです。今質問に。
コントロールの処理を拡張可能にするために、クラスをコントロールタイプにマップできるようにしたいと考えています。
例えば、フォームの処理方法内
Form.RegisterControl("Text", Text)
Form.RegisterControl("DateTime", DateTimeControl)
Iは、文書内の各制御ノード上itterateたい(これは再び無関係で行う方法)と登録クラスに基づいて、そのタイプに一致するクラスのインスタンスをインスタンス化します私たちのRegisterControlメソッドによって。この段階では、コントロールから派生したものであることを明示できますが、明示的に型を指定することはできません。それらはどちらもControlから派生しているので、私が知っているProcessメソッドを呼びたいと思います。
これも可能ですか?もしそうなら、私はそれについてどうやって行くのですか?
ありがとうございました。最初の答えは正しいはずです(あなたは正しく仮定しています)。私は今それに亀裂があります! –
ジョンさんに感謝します。これは完璧に機能しました。 –