Использование JavaScriptSerializer Deserialze массив универсального объекта в C # - PullRequest
1 голос
/ 09 августа 2011

Я вызываю rest API из цикла, и имя моего объекта определяется во время выполнения. Я могу использовать отражение здесь для одного объекта, но как получить список объектов?

  foreach (CloudDBTableList table in cloudDBTableList)
            {                
               string uri = string.Format(table.URI, "1-Jan-2011");
               string result  = _dataPullSvcAgent.GetData (baseURI + uri);


               string tableClassType = table.TableName + ", " + namespacePrefix;//namespacePrefix is same as assembly name.
               Type t = Type.GetType(tableClassType);
               JavaScriptSerializer jsonDeserializer = new JavaScriptSerializer();
//t is only type of object whereas below method returns List<t> how to put it?
               var objectList = jsonDeserializer.Deserialize(result, t);

            }
            return true;
        }

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Stackoverflow Скалы.Нашел ответ на этот вопрос (хотя приведенный ниже вопрос немного отличался от моего): -

Как динамически создать универсальный объект C # с помощью отражения? Я изменил свой код следующим образом: -

 foreach (CloudDBTableList table in cloudDBTableList)
            {                
               string uri = string.Format(table.URI, "1-Jan-2011");
               string result  = _dataPullSvcAgent.GetData (baseURI + uri);


               string tableClassType = namespacePrefix + "." + table.SchemaName + "." + table.TableName + ", " + namespacePrefix;//namespacePrefix is same as assembly name.
               Type t = Type.GetType(tableClassType);
               JavaScriptSerializer jsonDeserializer = new JavaScriptSerializer();
               var L1 = typeof(List<>);
               Type listOfT = L1.MakeGenericType(t);
               var objectList = jsonDeserializer.Deserialize(result, listOfT);


            }
0 голосов
/ 09 августа 2011

Вы должны быть в состоянии сделать что-то вроде этого:

JavaScriptSerializer jsonDeserializer = new JavaScriptSerializer();
List<CloudDBTableList > list= jsonDeserializer.Deserialize<List<CloudDBTableList>>(cloudDBTableList);
...