私は WPF で DependencyProperties を使い始めたばかりで、それらを理解しながらいくつかの考えを確認したいと思っていました。
以下が与えられた場合 (そして今のところ命名規則を無視します):
class MyTestClass
{
public static readonly DependencyProperty dp1 = DependencyProperty.Register("MyProp", typeof(String), typeof(MyTestClass));
public static readonly DependencyProperty dp2 = DependencyProperty.Register("MyProp2", typeof(String), typeof(MyTestClass), new PropertyMetadata("Hello"));
}
dp2 が TypeInitializationException をスローし、「'MyTestClass' 型は DependencyObject から派生する必要があります」というメッセージが表示されることがわかりましたが、これは予想どおりでしたが、dp1 は問題なく受け入れられました。
これで、DependencyObject ではない型にプロパティ メタデータを登録しようとしているときに dp2 が例外を発生させる理由がわかりました。これは問題ありません。カバーの下を見て、dp1とdp2の両方がたどるコードパスを見ることができるので、コードの観点からdp1が例外を発生させない理由を理解していますが、概念的にはdp1とdp2の両方が同じ例外を発生させると予想していました。
私の質問は、DependencyObject の GetValue/SetValue メソッドなしでどのように使用できるかがわからないため、ownerType が DependencyObject ではない dp1 のような DependencyProperty を作成することにどのような用途があるかです。