2015-03-04 4 views
1

В JavaScript я могу создать новый объект (называемый чистым). Тогда, если я хочу установить атрибут этого объекта, я просто устанавливаю objectName.attributeName = what. Возможно ли сделать что-то подобное в C#, БЕЗ, определяющее класс?Можно ли добавить атрибут объекта с C#


var clean = new Object(); 
clean.isClean = true; 
+0

'dynamic' https://msdn.microsoft.com/en-us/library/dd264741.aspx – Yuck

+1

И я голосую, чтобы закрыть, потому что это на самом деле можно было найти довольно легко. – Yuck

ответ

3

С .NET 4.0 Да, вы можете с помощью ExpandoObject:

dynamic expando = new ExpandoObject(); 
expando.text = "hello world"; 

Во всяком случае, если вы просто хотите, чтобы создавать объекты на лету, вы должны использовать объявление анонимного типа:

var obj = new { text = "hello world" }; 

Фактически, объекты expando h ave добавленное значение: вы также можете добавлять методы с использованием делегатов. Например:

dynamic expando = new ExpandoObject(); 
expando.DoIt = new Action 
(
    () => 
    { 
     // Code here 
    } 
); 

expando.DoIt(); 
+1

У вас есть документация? Мне интересно узнать об этом 'ExpandoObject'. –

+1

@jsve Возможно, эта статья: http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx –

+3

@jsve: Вы пытались * искать * для документации? Просто поиск 'ExpandoObject' находит его для меня - и добавление .net или msdn к поиску находит его еще более чисто. –

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