как извлечь объект .net - PullRequest
       21

как извлечь объект .net

0 голосов
/ 26 августа 2009

У меня есть функция, которая возвращает этот объект:

 var result = AjaxUserToPlacePaging();

 //this is the object
 object[] objcs = new object[1];

 objcs[0] = new
 {
     countHereNow = countHereNow.ToString(),
     countWillBeHere = countWillBeHere.ToString(),
     countWasHere = countWasHere.ToString()
 };

Как извлечь информацию из объекта?

например

 int count  = result[0].countHereNow;

Возобновление функции, которая будет объектом, происходит потому, что я использую jquery и с помощью jquery он берет объект и конвертирует его в json

Ответы [ 4 ]

4 голосов
/ 26 августа 2009

Вам нужно будет использовать Отражение :

string countHereNow = string.Empty;
Type objType = result[0].GetType();
PropertyInfo prop = objType.GetPropertyInfo("countHereNow");
countHereNow = prop.GetValue(result[0], null) as string ?? string.Empty;

Обычно я думаю, что возвращение анонимного типа - плохая идея, но, возможно, у вас есть причина для этого. В противном случае я бы создал собственный класс и просто возвратил массив этого типа.

2 голосов
/ 26 августа 2009

Я рекомендую создать собственный класс и сохранить его, вместо того, чтобы просто хранить анонимный тип в «объекте» напрямую.

objcs[0] = new MyClass
{
    countHereNow = countHereNow.ToString(),
    countWillBeHere = countWillBeHere.ToString(),
    countWasHere = countWasHere.ToString()
};

Это позволит вам отбросить его обратно, когда вы получите:

MyClass myClass = result[0] as MyClass;
if (myClass != null)
{
    int count = myClass.countHereNow;
}

Существуют приемы, позволяющие работать с анонимными типами, но в большинстве случаев они просто делают код менее обслуживаемым

0 голосов
/ 26 августа 2009

В настоящее время вы объявляете массив как массив объектов

object[] objcs = new object[1];  

Объявите его как неявно типизированный (var) массив

var objcs = new [];

Таким образом, объекты, которые вы фактически добавляете вмассив не будет иметь тип SystemObject, но будет неявно типизирован

0 голосов
/ 26 августа 2009

Вам нужно использовать отражение (или что-то, что использует отражение), чтобы получить содержимое вашего анонимного объекта вне функции, в которой вы его создаете. Может быть, вам следует создать класс и вернуть его экземпляры?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...