2011-11-08 7 views
4

次のコードは、私がそれをキャストしようとしているにもかかわらずコンパイルすることが不可能であるようです:Pはsomone私が間違っていることを教えてくださいできますか?式を使用して型を参照できないのはなぜですか?

public class LUOverVoltage 
{ 
    public string Name { get; set; } 
    public enum OVType { OVLH, OVLL } 

    public List<string> PinGroups = new List<string>(); 

    public void Add(string name, OVType type, string Grp) 
    { 
     this.Name = name; 
     this.OVType = type; //Why cannot reference a type through an expression? 

     PinGroups.Add(Grp); 
    } 
} 
+0

コンパイルエラーはありますか? – Connell

+0

'OVType':式で型を参照できません。 –

答えて

13

enum型を持つフィールドは、enum型自体と混同しています。あなたのコードは、string="bla"と言っても大変便利です。

public enum OVType { OVLH, OVLL } 
public class LUOverVoltage 
{ 
    public string Name { get; set; } 
    public OVType OVType { get; set; } 

これは、OVTypeという名前の型と同じ名前のプロパティを宣言します。今すぐあなたのコードが動作するはずです。


補足として、タイプ名とプロパティ名の両方が.net命名ガイドラインに違反しています。

私は列挙型OverVoltKindとプロパティーをちょうどKindと名付けました。

0

OVTypeは、変数の型です。新しい列挙型を宣言するためのキーワードであるenumに設定しました。 OVTypeをenum型として宣言し、それをプロパティ型として使用する必要があります。

public enum OVType { OVLH, OVLL } 

public class LUOverVoltage 
{ 
    public string Name { get; set; } 
    public OVType OVType { get; set; } 

    public List<string> PinGroups = new List<string>(); 

    public void Add(string name, OVType type, string Grp) 
    { 
     this.Name = name; 
     this.OVType = type; 

     PinGroups.Add(Grp); 
    } 
} 
+0

申し訳ありませんが、これではこれ以上改善されません。 –

+0

パブリックOVType OVType {OVLH、OVLL}はコンパイルされません – MattDavey

+0

Ah!私はそれを逃したかのように。今更新されました。 – Connell

4

プロパティを設定していない場合は、列挙型を設定しようとしています。

public OVType ovTypeを追加し、this.ovType = typeを使用してください。

public class LUOverVoltage 
{ 
    public enum OVType { OVLH, OVLL } 

    public string Name { get; set; } 
    public OVType ovType; 
    public List<string> PinGroups = new List<string>(); 

    public void Add(string name, OVType type, string Grp) 
    { 
     this.Name = name; 
     this.ovType = type; 

     PinGroups.Add(Grp); 
    } 
} 
1

OVTypeは -

はあなたがあなたのクラスの内部Enumを定義している。この

public class LUOverVoltage 
{ 
    public string Name { get; set; } 
    public OVType Type {get; set;} 

    public enum OVType { OVLH, OVLL } 

    public List<string> PinGroups = new List<string>(); 

    public void Add(string name, OVType type, string Grp) 
    { 
     this.Name = name; 
     this.Type = type; 

     PinGroups.Add(Grp); 
    } 
} 
2

を試してみて、そのタイプ、フィールドではありません。あなたが行っていないことは、その列挙型のインスタンスを保持する変数を宣言することです。

public enum OVType { OVLH, OVLL } 

public class LUOverVoltage 
{ 
    public string Name { get; set; } 
    public OVType OVType { get; set; } 

    public List<string> PinGroups = new List<string>(); 

    public void Add(string name, OVType type, string Grp) 
    { 
     this.Name = name; 
     this.OVType = type; // setting the property, not the enum definition 

     PinGroups.Add(Grp); 
    } 
} 
関連する問題