将类作为参数传递给方法

时间:2014-12-10 17:01:40

标签: c# class parameters

我无法完成此方法。如何将class作为参数传递并返回相同的类? 这是我遇到的情景

Class A
{
...
}

Class C
{
 ....
}

Class B
{
  A a = getJSONClass(String jsonString, classA?);
  C c = getJSONClass(String jsonString, classC?);

  public (class?) getJSONClass(String jsonString, class?)
  {
   MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
   DataContractJsonSerializer ser = new DataContractJsonSerializer(class?.type);
   return ser.ReadObject(memoryStream) as class?;
  }

}

任何帮助??

3 个答案:

答案 0 :(得分:3)

从语法上讲,你使用泛型:

public T getJSONClass<T>(String jsonString) where T : class
{
   MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
   DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
   return ser.ReadObject(memoryStream) as T;
}

用法:

A a = getJSONClass<A>(String jsonString);
C c = getJSONClass<C>(String jsonString);

答案 1 :(得分:1)

使用generics

    public T GetDeserializedObject<T>(string jsonString) where T: class
    {
        var serializer = new DataContractJsonSerializer(typeof(T));

        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
        {
            return serializer.ReadObject(stream) as T;
        }
    }

答案 2 :(得分:1)

你不能这样做:

Class A
{
...
}

Class C
{
 ....
}

Class B
{
  A a = (A)getJSONClass(String jsonString, typeof(A));
  C c = (C)getJSONClass(String jsonString, typeof(C));

  public object getJSONClass(String jsonString, Type type)
  {
   MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
   DataContractJsonSerializer ser = new DataContractJsonSerializer(type);
   return ser.ReadObject(memoryStream);
  }
}