正如下面可以看到,用户能够改变只读产品字段/属性:如何在C#中创建只读对象属性?
class Program
{
static void Main(string[] args)
{
var product = Product.Create("Orange");
var order = Order.Create(product);
order.Product.Name = "Banana"; // Main method shouldn't be able to change any property of product!
}
}
public class Order
{
public Order(Product product)
{
this.Product = product;
}
public readonly Product Product;
public static Order Create(Product product)
{
return new Order (product);
}
}
public class Product
{
private Product(){}
public string Name { get; set; }
public static Product Create(string name)
{
return new Product { Name = name };
}
}
我认为这是很基本的,但它似乎并非如此。
如何在C#中创建一个只读对象属性或字段?
感谢,
相关:[为什么微软建议对可变值的只读字段?](http://stackoverflow.com/questions/2804805/why-does-microsoft-advise-against-readonly-fields-with-mutable-values/2804850#2804850) –