当尝试使用我的自定义类型类填充C#中的数组时,该数组会填充命名空间中类的位置。但是,我需要使用我使用该类型指定的值填充数组。
我尝试使用这些实现中的每一个来定义我的数组,结果相同:
List<FieldName> fieldNames = new List<FieldName>() { "event_ref", "user_id", "sys_time" };
FieldName[] fieldNames = { "event_ref", "user_id", "sys_time" };
在这两种情况下,对于所有三个字段,在较低函数调用中实现的值(没什么花哨的)是ElectronicSJP.DatabaseIF.FieldName
。
设置断点后,我可以看到fieldNames
填充为:
如果扩展了该表,我指定的值将处于下一级别。我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 };
}
}
我怀疑我可能需要添加另一个隐式运算符,或者两个,所以我可以使用一些帮助,或者您认为可以解决此问题的任何其他想法。感谢。
答案 0 :(得分:2)
当调试器显示对象或对象列表时,它将显示类型而不是特定字段。
为了查看&#34;用户友好值&#34;,可以覆盖Object类上存在的toString方法,或者可以使用DebuggerDisplay属性修饰要显示的属性(信用于Adam) V在评论中高于上述!)
示例:
public override string ToString()
{
return name;
}
指向如何覆盖方法的链接。 https://msdn.microsoft.com/en-us/library/ms173154.aspx