我正在寻找填充对象属性的最佳方法。情况是这样的:
我需要将一个对象发送到一个 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/