0

System.ComponentModel.BooleanConverterの機能を拡張して、とだけでなく複数のオプションを使用できるようにするという、非常に単純なシナリオがありtrueますfalse

したがって、たとえば、、などの値はyes。と同じです。1ontrue

メソッドをオーバーライドGetStandardValues()してクイックテストを実行しようとしました。定義された値の1つを渡した場合に呼び出すIsValid(string)必要がある特定の値すべてのコレクションを返したtrue場合、そうではないように思われます。これを行うには、たくさんのがらくたを実装/オーバーライドする必要がありますか?

私が本当に必要としているのはIsValid()機能だけなので、それだけの価値があるのだろうかと思います。それとも、TypeDescriptorsそもそも使用するよりも良いオプションがありますか?

4

1 に答える 1

2

「機能のみが必要IsValid」な場合は、それだけをオーバーライドするだけで十分です。ただし、CanConvertFrom(Type)実際には、型を変換できるかどうかをテストするだけの場合は、オーバーライドする必要のあるメソッドです。このメソッドは一部のインフラストラクチャクラスで使用されており、その場合はオーバーライドIsValidするだけでは不十分な場合があります。

ブールコンバーターの場合は、もオーバーライドする必要があり、値を使用しない場合はConvertFrom(object)戻るだけです。nullそうしないと、呼び出しIsValid(順番に呼び出すCanConvertFrom)が失敗する可能性があります。

于 2013-03-04T20:41:36.163 に答える