2013-09-16 3 views
1

Я создал объект с булевым свойством и коллекцией.Как получить свойства объекта?

что я делаю:

У меня есть метод, который вызывается, когда на пост, который в свою очередь вызывает другой метод, который возвращает объект. моя проблема в том, что я не получаю свойства объекта.

public object methodThatReturnsAnObject(string a, string b) 
{ 
    object data = new {isSaved = false, personsToCredit = ""} 

    // perform my code and if all is valid i set values to my object properties and return the object 

    data = new {isSaved = valid, personsToCredit = persons } 

    return data;  
} 

Мой другой метод:

object Information = methodThatReturnsAnObject(string a, string b); 

, Что моя проблема? Когда я отлаживаю объект Information, он содержит два свойства, которые я хочу получить, НО, когда я набираю Information.isSaved, он говорит, что информация не содержит определения для isSaved?

+0

Какой тип '' 'является объектом? –

+0

@SamLeach: Это анонимный тип. – recursive

+0

@recursive Я знаю, я подразумевал, что он возвращает не анонимный тип. –

ответ

7

Ожидается, что компилятор узнает, что ваш объект будет иметь эти динамические свойства.

Это ваша основная объектная ориентация, которую вы должны использовать должным образом.

Что вам нужно сделать, это либо (1) определить конкретный класс с двумя свойствами, и позволить вашему методу вместо этого вернуть этот класс, либо (2) использовать dynamic вместо object.

Пример подход # 1:

public class UpdateInfo 
{ 
    public bool IsSaved {get; set;} 

    ... 
} 


public UpdateInfo MethodThatReturnsUpdateInfo(string a, string b) 
{ 
    ... 
} 

Вы должны использовать dynamic только в случае, если вы не можете использовать подход # 1, но я бы сказал, что в 99,9% случаев, подход # 1 путь идти.

+0

Если * действительно * необходимо, вы можете применить возвращаемое значение к анонимный тип: http://stackoverflow.com/questions/1409734/cast-to-anonymous-type. Но я не вижу смысла. Гораздо лучше определить класс или интерфейс. – Oliver

+0

Спасибо большое @Roy Dictus! я собираюсь пойти с динамическим подходом на этот раз с его довольно большого проекта, и я не хочу добавлять дополнительный класс для этого. Я узнал что-то новое здесь, thx alot! – ThunD3eR

+1

@ Ra3IDeN Почему вы не хотите добавлять класс? Это безопаснее, так как вы будете проверять время компиляции кода. – Oliver

Смежные вопросы