This question already has answers here:
Convert class to dynamic and add properties

(5个答案)



can one convert a dynamic object to an ExpandoObject (c#)

(2个答案)



How to extend an existing object in c# 4.0 using dynamics

(1个答案)


3年前关闭。




我已经阅读了很多有关如何使用 ExpandoObject 通过添加属性从头开始动态创建对象的信息,但是我还没有发现如何从已经拥有的非动态C#对象开始做同样的事情。

例如,我有一个普通的类:
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string Telephone { get; set; }
}

我想将其转换为ExpandoObject,以便可以根据已有的属性添加或删除属性,而不是从头开始重建相同的对象。这可能吗?

编辑:标记为重复的问题显然不是此问题的重复。

最佳答案

可以这样完成:

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));

关于c# - 如何将任何C#对象转换为ExpandoObject? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46948289/

10-12 05:25