2012-03-14 11 views
0

コントロール、および2つのプロパティWindowsのカスタムで動的プロパティを設定するには、どのようにユーザーコントロールを作成している

  1. タイプ
  2. パラメータTypeが列挙され

を持つされています
public enum Type { XType , YType } 

およびParameterは、タイプString

今、Parameterをenumに変更する必要があります。私はそれぞれTypeに2つのパラメータがあると確信しています。

は、XTypeFoo, XTypeBar, YTypeFoo, YTypeBarである。

先に、ParameterStringという名前で保存しました。今私は、ユーザーが、その後XTypeとしてTypeを選択した場合

public enum XParameter { XTypeFoo, XTypeBar } and 
public enum YParameter { YTypeFoo, YTypeBar } 

は、今私はすなわち

Typeに依存)何か他のものにstringからParameterプロパティの種類を変更する必要があり、このための2つの列挙型を作成しましたParameterは、XParameterであり、YTypeの場合、XParameterである必要があります。

だから基本型は何でしょうか。

+0

タイトルに「C#:」などのプレフィックスを付けないでください。それがタグのためのものです。 –

答えて

0

私はそれが必要ではないと思います。あなたはむしろクラスを再設計するべきです。

パラメータとしてちょうど{ Foo, Bar }の列挙を持つのはどうですか?

0

enumsから継承できないため、クラスを使用する必要があります。各列挙値の利用クラス定数または "Dummyclass" のいずれか:

あなたは、基本クラスを使用して、両方のケースでは:

public class BaseParameter { } 

"Dummyclass":

public class XParameter : BaseParameter { } 
public class YParameter : BaseParameter { } 
public class XTypeFoo : XParameter { } 
public class XTypebar : XParameter { } 
public class YTypeFoo : YParameter { } 
public class YTypebar : YParameter { } 

定数:

IsAssignableを使用してXParameterまたはを確認できますと正確にはvalue is XTypeFooまたはvalue == XParameter.TypeFooを使用してください。

0

Typeを列挙すると、(許可された値がTypeに依存しますが)Parameterも、本質的にそれから列挙されます予定されている場合は、すべての可能な値は、事前に知られています。だからParameterの単一の組み合わせ列挙を持ち、Typeプロパティを破棄するのはどうですか?例えば、

public enum ParameterType 
{ 
    XTypeFoo, 
    XTypeBar, 
    YTypeFoo, 
    YTypeBar, 
} 

代わりに、あなたは型情報についてParameterを求めて開始することができます。たとえば、

public interface IParameter 
{ 
    public ParamType GetParamType(); 
} 

public sealed class FooParameter : IParameter 
{ 
    public static readonly FooParameter XParameter = new FooParameter(); 
    public static readonly FooParameter YParameter = new FooParameter(); 

    public ParamType GetParamType() { return ParamType.Foo; } 

    private FooParameter() { } 
} 

public sealed class BarParameter : IParameter 
{ 
    public static readonly BarParameter XParameter = new BarParameter(); 
    public static readonly BarParameter YParameter = new BarParameter(); 

    public ParamType GetParamType() { return ParamType.Bar; } 

    private BarParameter() { } 
} 

public class MyControl : UserControl 
{ 
    IParameter Parameter {get; set; } 

    ... 
} 
関連する問題