11

TypeConverter に対して暗黙的な演算子を実装するのは非常に簡単に思えるので、フレームワークで TypeConverters が普及しているため、それらは同等ではないと想定しています (FrameworkElement を拡張するものを参照してください)。

しかし、なぜ?string->object および object->string の暗黙的な演算子を作成し、シリアル化 (XML と XAML の両方) でそれらを利用する方がはるかに簡単ではないでしょうか?

ヤグニですか?単独責任?インターフェイスで演算子のオーバーロードを指定できないためですか?

4

4 に答える 4

8

タイプコンバーターは、見た目よりもはるかに複雑です。型変換器は、変換のコンテキストに関する一連のメタデータ(たとえば、関連するプロパティやオブジェクト)にアクセスできます。これは、シナリオごとにカスタムオプションを提供するために使用されます(リンクされたドロップダウン、つまり国/郡/市など)。また、プロパティごとにタイプコンバーターを指定することもできます。これは、さまざまな文字列プロパティのさまざまな処理を提供するために多くの場所で使用されています。演算子はすべての文字列を同じように扱います。

暗黙の演算子は、変換される値についてのみ知っていますが、コンパイル時のサポートははるかに優れています。

または別の方法: TypeConverterフレームワークをサポートするフレームワーク機能です。演算子は(主に)言語をサポートする言語機能です

さらに追加するには-type-converters(名前にもかかわらず)は単に変換するだけではありません:

  • それらはサブプロパティメタデータを提供します(考えてみてください:上のプロパティを拡張しますPropertyGrid
  • タイプの利用可能なオプションを提案します(考えてみてください:ドロップダウンの選択肢PropertyGrid

PropertyGridただし、;-pだけでなく多くの場所で使用されていることに注意してください。

于 2008-12-18T22:32:33.980 に答える
2

私はこれについて専門家ではありません。

しかし、一見すると、元のクラスの外部にコンバーターを提供でき (暗黙の演算子に対して)、同じものに対して複数の TypeConverter クラスを定義できる (同じ値に対して異なるビューを取得する場合) ように見えます。

于 2008-12-18T21:46:34.573 に答える
1

好奇心が強い:TypeConvertersはVisual Studioデザイナーと連携できるため、リストや配列などのプロパティに適切なTypeConverterを提供すると、デザイナーを介してそれらを設定できます。暗黙の演算子もこのサービスを提供しますか?そうでない場合は、それがあなたの質問に答えていると思います。これらはフレームワークで使用されているため、これらのアイテムを使用するコントロールはデザイナーと連携できます。

于 2008-12-18T22:10:00.033 に答える
1

暗黙の演算子は便利ですが、混乱を招く可能性もあります。あるタイプから別のタイプに変換する必要がある場合は、何が起こっているのか疑問がないので、明示するのが最善だと思います。

また、暗黙の演算子は非常によく似たもののために予約されているようで、暗黙の変換は直感的です。しかし、とにかくそれはすべて主観的なものだと思います。あなたの最善の判断をしてください.

于 2008-12-18T21:30:48.257 に答える