8

クラスでコンポーネント デザイナーを無効にするには、[System.ComponentModel.DesignerCategory("")] 属性を追加するだけで簡単にできますが、どの世代のこのクラスから派生したクラスでも機能しません。例えば:

[System.ComponentModel.DesignerCategory("")]
public class A:ServiceBase { } //Designer is disabled here

public class B:A {} //Designer is enabled here

[System.ComponentModel.DesignerCategory("")]
public class B:A {} //Designer is enabled here too

[System.ComponentModel.DesignerCategory("Code")]
public class B:A {} //Designer is enabled even here

もちろん、これは他の世代や順列でも起こります。例えば

//Whatever attribute here
public class C:B {} //Designer is enabled here

誰かがそれを取り除こうとしたことがありますか?第 1 世代で明示的に無効にされている場合でも、コンポーネント モデルがデザイナー サポートを追加しようとするのはなぜですか?

ありがとうございました

4

2 に答える 2

8

このような動作の理由は、キャッシュされた参照アセンブリです。これを解決するには、属性を持つベース サーバーを含むアセンブリへの参照を削除し、再度追加します。この場合、Visual Studio はプロジェクトを再構築し、既定のエディターを派生クラスに定義しません。

于 2012-01-25T16:25:31.320 に答える