この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 20410|答える: 1

[出典] .net/c# 機能継承の詳細

[リンクをコピー]
掲載地 2017/02/14 11:13:38 | | |
説明:

クラスは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に設定されているからです。







先の:2つのオブジェクトプロパティ間のC#割り当て
次に:未検出タイプエラー:a(...)。 親(...)。 そしてセルフは関数ではありません
 地主| 掲載地 2017/03/30 9:35:49 |
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com