c# - 向对象添加值的最佳方法?

标签 c#

我正在寻找填充对象属性的最佳方法。情况是这样的:

我需要将一个对象发送到一个 dll 方法,这个对象有一个默认的名称属性(我稍后会展示)。实际上,为了对 dinamicall 的所有属性进行定价,我首先创建了一个字典,如下所示:

IDictionary<string, string> user = new Dictionary<string, string>();

稍后在 add 方法中,我要求用户像这样插入值:

Console.WriteLine("Insert user name:");
user["name"] = Console.ReadLine(); //valorized dictionary index
Console.WriteLine("Insert surname: ");
user["surname"] = Console.ReadLine();

在此之后,我将字典索引添加到对象属性:

object data = new{
    name = user["name"],
    surname = user["surname"]
};

User.add(data); //Send the user to add to rest resource..

这样怎么看,在我看来有点长。我想避免使用字典并直接将数据推送到对象中,可以这样做吗?是不是,还有另一种方法可以更快地达到结果?提前致谢。

最佳答案

如果满足您的需要,您可以使用dynamic ExpandoObject:

dynamic user = new ExpandoObject();
user.name = Console.ReadLine();
Console.WriteLine("Insert surname: ");
user.surname = Console.ReadLine();
User.add(user);

稍后,您还可以使用底层字典来动态访问属性:

var dict = (IDictionary<String, Object>)user;
dict["name"] = "John";
Debug.WriteLine(dict["name"]); // Outputs John
Debug.WriteLine(user.name);    // Outputs John

关于c# - 向对象添加值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36713021/

相关文章:

c# - 从 Python 移植到 C#

c# - 相同的GetHashCode()用于不同的对象

c# - 写入 Visual Studio 输出窗口,万无一失的方法

c# - System.Linq.IQueryable 不包含 'Where' 的定义

c# - 从 Visual Studio UI 运行测试类别

c# - 如何判断 Pcap.Net TCP 数据包中还剩下多少数据空间

c# - 增加 Win7 Aero 主题中 DateTimePicker Calender 的字体大小

c# - 显示过滤器 C#

c# - 是否有行为类似于 Active Directory 的权限和组的 C# 库?

c# - 如何设置缓存控制