考虑以下内容:
public class Project.Model.ModelName : BaseClass
{
private int _id;
private string _name;
public int ID
{
get { return _id; }
set { _id = value; }
}
public string Name
{
get { return _name; }
}
}
public class Project.BLL.ModelName
{
public static string ComputeName(Model.ModelName m)
{
// Determine value using complex business logic
return "Whatever";
}
public static bool SetName(Model.ModelName m)
{
string Name = ComputeName(m);
// How can I set the ModelName.Name value here?
m.Name = ??? // No set accessor
}
}
我有一个带有字符串属性的模型,它只有一个 get 访问器,我们不希望直接设置该值。
该属性的值是在 BLL(一个不同的库)中计算的。
在不使用反射的情况下设置属性值的最佳方法是什么?
澄清一下,挑战在于 Name 值需要是不可变的。经常访问和修改相同的模型。我们不想冒险有人在事后为其赋值。我想我正在寻找一种最佳实践来保持不变性。