2007年9月12日水曜日

プロパティでSystem.Typeを指定したい?(2)

プロパティでTypeConverterを利用したデザイン時サポートを行う際には、System.ComponentModel.TypeConverterクラスを継承して実装していくのが楽なんだと思う。まぁ実際には大した作業量の違いはないかも知れないけど。で、このクラスのメソッドで実装する必要になるのは次にあげるものくらい。

  • GetStandardValuesSupportedメソッド
  • GetStandardValuesメソッド
  • CanConvertFromメソッド
  • CanConvertToメソッド
  • ConvertFromメソッド
  • ConvertToメソッド

上にあげた6つのメソッドは、実際のところ2つ*3組という考え方で捉えるといいかも。

まずはGetStandardValuesSupportedメソッドとGetStandardValuesメソッド。これはプロパティダイアログでドロップダウン型の時に関わってくるメソッドで、「標準値リスト」というのをサポートするかどうか、という関連で利用されるね。GetStandardValuesSupportedメソッドでTrueを返却するなら標準値リストをサポートする、Falseならサポートしないという風にIDE側で判断するのに使われます。ドロップダウン型は標準値リストをサポートする時だけ利用できると思っていればいいかな。そしてそのリストに設定される値一覧がGetStandardValuesメソッドで取得できる、と。

そしてCanConvertFromメソッドとConvertFromメソッド。これは「ある型・クラスから、このTypeConverterで扱う型・クラスに変換」という処理に関連している。変換可能な場合はCanConvertFromメソッドでTrueを返却して、実際の変換処理をConvertFromメソッド内部で行うことになるね。今回みたいなケースでは「文字列からSystem.Type」という変換をすればよし。

それと逆の動作をするのがCanConvertToメソッドとConvertToメソッド。こっちは「TypeConverterで扱う型・クラスをある型・クラスに変換」という処理を行うことになる。変換可能であればCanConvertToメソッドでTrueを返却、実際の処理をConvertToメソッドで行えばよし。実際にはConvertFrom程処理は少なくないんだよね、こっち。

細かい中身については次回以降で。

0 件のコメント:

コメントを投稿