2011-07-12 18 views
0

私は、DESIGN、DESIGN_MODE、DESIGN_TIMEなどプリプロセッサディレクティブ値がないことを知っています。しかし、私はそのトリックをすることができるものが必要です。私の場合、継承されたクラスを変更して、コントロールが設計時に適切にレンダリングされるようにする必要があるため、通常のIf文は使用できません。もしそうでなければ、継承されたクラスが抽象クラスであるために例外を受け取ります。デザインモードプリプロセッサディレクティブ回避策

ここで私は達成するために探しているものです:

Partial Class MyCustomControl 
#If DesignMode Then 
     Inherits UserControl 
#Else 
    Inherits WidgetControl 
#End If 

任意の提案?

+1

あなたはこの仕事をすることはできません。デザインタイムをサポートするには、基底クラスを非抽象クラスにする必要があります。 –

+0

しかし、非抽象クラスを必要とせずにその周りに道があると確信しています。私はWidgetControlを継承する仲介クラスを作成しようとしましたが、デバッグやリリースをしているときにWidgetControlを使いたいと思っています。プリプロセッサディレクティブを使う方法があるはずです。 –

答えて

0

は、使用してみてください:

過去に
if (this.DesignMode == true) 
{ } 
else 
{ } 
+0

'this'は、UserControlから継承する現在のクラスを参照します。 – Ryno

+0

これを継承でどのように使用できますか?私は本当に私ができないと確信しています。 –

0

私が間に行くようにダミーのクラスを作成しました。時々VSはあなたが何をやっているのか把握していますが、通常はIDEを再起動すると解決します。

Partial Class MyCustomControl : MyAbstractClass_FAKE_IMPL 
{ 
    //your normal class 
} 

Partial Class MyAbstractClass_FAKE_IMPL : MyAbstractClass 
{ 

    //let IDE autogenerate implementation code that you are always going to override in reality. 

}