본문 바로가기
C#

[C#] Class to ExpandoObject / dynamic

by Minius 2021. 11. 9.
반응형

class로 정의된 데이터에 하나의 정보를 더 넣을 일이 생겼는데,
하나하나 연결해주자니 코드의 양도 많아지고, 따라서 오류가 생길수도 있었다.

 

찾아보니 좋은 방법이 있어서 기록한다.

 

var person = new Person { Id = 1, Name = "John Doe" };

var expando = new ExpandoObject();
var dictionary = (IDictionary<string, object>)expando;

foreach (var property in person.GetType().GetProperties())
    dictionary.Add(property.Name, property.GetValue(person));

이후 dictionary에 값을 추가해주면 된다.

 

 

참조:

https://stackoverflow.com/questions/46948289/how-do-you-convert-any-c-sharp-object-to-an-expandoobject

 

How do you convert any C# object to an ExpandoObject?

I've read a lot about how ExpandoObject can be used to dynamically create objects from scratch by adding properties, but I haven't yet found how you do the same thing starting from a non-dynamic C#

stackoverflow.com

 

댓글