访问对象属性并将其值设置为字符串

74

我有一个 Account 类的实例。每个账户对象都有一个所有者、参考等。

我可以通过访问器之类的方式来访问账户属性,例如:

account.Reference;

但是我希望能够使用动态字符串选择器来访问它,例如:

account["PropertyName"];

就像在 JavaScript 中一样。因此我将有 account["Reference"],它将返回该值,但我也希望能够像下面这样分配一个新值:
account["Reference"] = "124ds4EE2s";

我发现我可以使用


DataBinder.Eval(account,"Reference") 

如何根据字符串获取属性,但使用此方法无法为属性赋值。

对于这个问题有什么想法吗?


3
C#不是一种脚本语言;通常在学习一门新语言时,你需要学习相应的惯用语和约定。 - Pierreten
11个回答

-1

这里有一个简单的例子,希望能帮到你

static void Main(string[] args)
{
    Operators op = new Operators()
    {
        ID = 1,
        Name = "Edward",
        email = "e.lorenz@mail.com",
        Pass = "123456",
        Auth1 = "EDF3242523@FFSDGDF"
    };

    var typei = op.GetType();
    var ss = typei.GetProperties().Where(m => m.GetCustomAttributes<Password>().Count() > 0);

    foreach (var item in ss)
    {
        var text = typei.GetProperty(item.Name).GetValue(op).ToString();
        
        typei.GetProperty(item.Name).SetValue(op, Encrypt(text));
    }

    Console.WriteLine(op.Pass);
    Console.WriteLine(op.Auth1);

    Console.ReadKey();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接