对于一个项目,我在C#中创建了几个struct。 probject本身是一个ASP.Net MVC 2项目。
剪断:
struct TDummy
{
private char _value;
public TDummy(char value)
{
this._value = value; // Restrictions
}
}
我创建了这个,因为我需要将char变量限制为特定数量的值。 (我本可以创建一个枚举,但这些值也用在数据库中,然后我仍然需要转换它们)
现在我需要创建一个JsonResult,比如
return Json(new { Value = new TDummy('X') });
但是当我这样做时,我得到的结果是:
{"Value":{}}
我希望得到
的结果{"Value":"X"}
我尝试了几种方法,比如TypeConverter(CanConvertTo(string)),自定义类型序列化器(JavaScriptSerializer.RegisterConverters()),但要么它们不起作用,要么它们必须返回一个'Complex'json-object。 / p>
{"Value":{"Name":"Value"}}
对此有何看法?
我想将值类型序列化为值...
答案 0 :(得分:0)
如果有人有兴趣,我会创建一个小型演示(控制台应用程序)来说明这一点:
public struct TState
{
public static TState Active = new TState('A');
public static TState Pending = new TState('P');
private char _value;
public TState(char value)
{
switch (value)
{
case 'A':
case 'P':
this._value = value; // Known values
break;
default:
this._value = 'A'; // Default value
break;
}
}
public static implicit operator TState(char value)
{
switch (value)
{
case 'A':
return TState.Active;
case 'P':
return TState.Pending;
}
throw new InvalidCastException();
}
public static implicit operator char(TState value)
{
return value._value;
}
public override string ToString()
{
return this._value.ToString();
}
}
public class Test { public TState Value { get; set; } }
class Program
{
static void Main(string[] args)
{
Test o = new Test();
o.Value = 'P'; // From Char
char c = o.Value; // To Char
Console.WriteLine(o.Value); // Writes 'P'
Console.WriteLine(c); // Writes 'P'
JavaScriptSerializer jser = new JavaScriptSerializer();
Console.WriteLine(jser.Serialize(o)); // Writes '{"Value":{}}'
Console.ReadLine();
}
}