在我的 DDD 模式中,我将 SqlConnection 只读属性公开给我的 DAL 类对象。但是由于 SqlConnection 是引用类型,我仍然可以调用 .Dispose() 方法,尽管它是只读的。
同样的事情发生在 List<> 上,我通过将它转换为 ReadOnlyCollection 解决了这个问题,但我碰巧将许多其他核心 .NET 引用类型对象用作只读属性,并且无法创建包装类。
有什么解决方案吗?
添加代码:
public class DbContext
{
public SqlConnection sqlConnection {get; private set; }
}
public class caller
{
public caller()
{
var dbContext = new DbContext();
dbContext.sqlConnection.Dispose(); // Want to hide Dispose() method
}
}
最佳答案
readonly
修饰符仅适用于引用,不适用于实际实例(被引用)。
class Foo
{
public readonly Bar Bar1;
public Bar Bar2 { get; }
...
}
你仍然可以说 f.Bar1.Prop = 1;
但是因为 readonly
你不能做 f.Bar1 = null;
。 Bar2 也一样。
关于c# - 引用类型只读属性 - 真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278134/