説明:
クラスはAとBの2つあり、I AはクラスBを受け継ぎ、Bが親クラスです
TestAttributeプロパティはクラスAとクラスBにそれぞれ設定しました...
次に、対象の特性を取り、コードは次のようになります。
結果数が1で、属性はBが設定した属性ではなく、ましてやマージされたものではないと分かりました。なぜでしょうか???
[Help("BaseClass"]] publicclass Base{} publicclass Derive : Base{} ここには4つの可能な組み合わせがあります:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true] 最初のケース:
Deriveクラスをクエリすると(後ほど実行時にクラスのプロパティを照会する方法を説明します)、継承されたプロパティがfalseに設定されているため、Help機能は存在しません。
第二のケース:
前者と同じで、継承もfalseに設定されています。
三つ目の状況:
3番目と4番目の場合を説明するために、まず派生クラスにいくつかのコードを追加します。
[Help("BaseClass"]] publicclass Base{}[Help("DeriveClass"]) publicclass Derive : Base{} 次にヘルプ機能をクエリします。inheritedはtrueに設定されているのに対し、AllowMultimousはfalseに設定されているため、派生クラスのプロパティしか取得できません。 したがって、ベースクラスのヘルプ機能は派生クラスのヘルプ機能によって上書きされます。
4つ目の状況:
ここでは、派生クラスがベースクラスのHelp機能と自身のHelp機能の両方を持っていることがわかります。なぜならAllowMultimentがtrueに設定されているからです。
|