2016-05-31 14 views
1

私はプロパティーをコールバックに変更しました。その中でいくつかの検証を実行する必要があります。DependencyObject.SetValueとキャストとセットのプロパティー

私は新しい値を取得し、minやmaxなどの他のプロパティの基準に対して検証します。私は私の質問があり、変更イベントから依存関係オブジェクトを取得し、

DependencyObject.SetValue(TargetProperty,NewValue); 

を使用するか、それを変数にキャストし

直接

ObjectType myObjectType = (ObjectType)DependencyObject; 
myObjectType.Target=NewValue; 
をプロパティを使用するかを計画しています。これを行うために

いずれかの方法を他の方法よりも使用する理由は何でしょうか。キャストは、SetValue/GetValue検索などの多くのことを言うよりも、リソースの消費量が多いでしょうか?私はメソッドで最大10回プロパティを参照します。

多くのありがとうございます。

+0

私は[このMSのリンク](https://msdn.microsoft.com/en-us/library/ms752914)にDPとその書き方について見てみたいと思います。あなたのやり方で書いてみる理由はわかりません... –

答えて

1

DependencyObjectの依存関係プロパティの標準実装では、SetValue()を呼び出します。さらに、キャスティングは、特にこの状況では、汚れています。したがって、実際には2つのアプローチの間に実際的な違いはありません。

私にとっては、操作のどの部分に集中したいのですか。オブジェクトが実際にDependencyObjectであるという事実にあなたの実装を緊密に結びつけたいのであれば、私はSetValue()を直接呼び出すことを避ける理由はほとんど見当たりません。これがWPFの機能です。

一方、コードをよりC#のようにし、通常のプロパティアクセサのイディオムに従う場合は、正しい型にキャストしてプロパティを直接設定すると読みやすく保守性が向上します。はい、キャストしてプロパティセッターを呼び出す余分な操作を追加します。しかし、それは無視できるコストであり、実に計り知れないものです。そして、その代償として、プロパティの特定の実装を想定しないコードを取得します。

関連する問題