gpt4 book ai didi

c# - 如何从方法内部动态更新类的不同字段?

转载 作者:行者123 更新时间:2023-11-30 13:40:12 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How can I code a C# function to accept a variable number of parameters?

我有以下类(class):

public class Product : AuditableTable  
{
public string Position { get; set; }
public string Quantity { get; set; }
public double Location { get; set; }
}

我需要的是能够使用以下函数更新类中的字段。

参数:

  • ac 和 pr 定义键并使我能够获得该类的实例。
  • fld 是要更新的类的字段名。它可以是“位置”、“数量”或“位置”或??
  • val 是值。它可能是“伦敦”或“1.234”之类的东西

如何在不使用 case 语句的情况下动态设置字段名称检查 fld 的每个值和许多不同的 setter 。另外,如果有一些设置字段的方法动态地如何将其转换为该字段的正确对象类型?

    public void Update(string ac, string pr, string fld, string val) 
{
try
{
vm.Product = _product.Get(ac, pr);
vm.Product. xxx = fld
}
catch (Exception e) { log(e); }
}

更新

这是 Pieter 提出的解决方案:

public void Update(string ac, string pr, string fld, string val) { 
try {
vm.Product = _product.Get("0000" + ac, pr);
if (vm.Product != null)
{
var property = vm.Product.GetType().GetProperty(fld);
var type = Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType;
val = Convert.ChangeType(val, type);
property.SetValue(vm.Product, val, null);
}
_product.AddOrUpdate(vm.Product);
}
catch (Exception e) { log(e); }
}

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com