2016-06-01 9 views
1

C#でカスタム型クラスを使用して配列を塗りつぶそうとすると、配列は名前空間内のクラスの場所に挿入されます。しかし、私は、その型で指定した値を配列に格納する必要があります。C#でのカスタム定義型の配列の塗りつぶし

私は同じ結果とこれらの実装の各使用して、私の配列を定義しようとしている。いずれの場合も

List<FieldName> fieldNames = new List<FieldName>() { "event_ref", "user_id", "sys_time" }; 

FieldName[] fieldNames = { "event_ref", "user_id", "sys_time" }; 

は、下の関数呼び出しで実装され得る値(何も空想)の3つのすべてのためにElectronicSJP.DatabaseIF.FieldNameですフィールド。

は、ブレークポイントを設定すると、私はfieldNamesのように移入されていることを見ることができます。そのテーブルが展開されている場合、私は、指定

enter image description here

値は、次の下のレベルです。 FieldNameのための私のクラスは、次のように定義されます

class FieldName 
{ 
    private string name = ""; 
    public static implicit operator string(FieldName fn) 
    { 
     return (fn == null) ? null : fn.name; 
    } 
    public static implicit operator FieldName(string fn) 
    { 
     return new FieldName { name = fn }; 
    } 
} 

私は私がそれか、この問題を解決することができると思い、他のアイデアをいくつかの助けを使用することができますので、別の暗黙の演算子、または2を追加する必要がありますことを疑います。ありがとう。

+1

私は一種の迷子です。配列に 'Field'sではなく' string'sを設定したいのですか? –

+2

intellisenseデバッガで表示したい文字列でオブジェクトのtoStringを実装します。 – Jeremy

+1

この質問は英語でも英語でも悪いですか? –

答えて

2

デバッガがオブジェクトまたはオブジェクトのリストを表示すると、特定のフィールドではなくタイプが表示されます。

「ユーザーフレンドリー値」を参照してくださいするためには、1 Objectクラス上に存在するtoStringメソッドをオーバーライドすることができますいずれか、またはあなたがアップで上記アダムVへDebuggerDisplay属性(クレジットを示すしたいプロパティを飾ることができますコメント)

例:!メソッドをオーバーライドする方法に

public override string ToString() 
    { 
     return name; 
    } 

リンク。 https://msdn.microsoft.com/en-us/library/ms173154.aspx

関連する問題