【发布时间】:2013-10-18 12:40:48
【问题描述】:
我想做的事:使用 Activator 动态创建一个对象(可以是任何类型)并将其传递给序列化 JSON 的方法。注意:我已经查看了No type inference with generic extension method,但这并没有真正为我提供有关如何解决此问题的任何有用信息。
编辑:使用 .NET 3.5 框架
问题:我收到的对象可能是一个数组(例如 int[]),当我使用泛型键入收到的对象时,我得到的是 object[] 而不是 int[]。
代码示例:
class Program
{
static void Main(string[] args)
{
object objArr = new int[0];
int[] intArr = new int[0];
string arrS = "[1,2]";
object objThatIsObjectArray = Serialize(objArr, arrS);//I want this to evaluate as int[]
object objThatIsIntArray = Serialize(intArr, arrS);//this evaluates as int[]
Console.Read();
}
public static object Serialize<T>(T targetFieldForSerialization, string value)
{
return value.FromJson<T>();
}
}
public static class JSONExtensions
{
public static TType FromJson<TType>(this string json)
{
using (var ms = new MemoryStream(Encoding.Default.GetBytes(json)))
{
var ser = new DataContractJsonSerializer(typeof(TType));
var target = (TType)ser.ReadObject(ms);
ms.Close();
return target;
}
}
}
【问题讨论】:
标签: c# json generics serialization reflection