如何防止任何人在C#中持有对象的引用

时间:2010-05-05 17:30:18

标签: c#

我有一个这样的课程

internal class  Report
{
    public Company TargetCompany { get; private set; }

    .... // other stuff
}

我不希望任何人能够做到这一点

Report r = GetReport();

Company c = r.TargetCompany;

但总是使用

r.TargetCompany 

当他们想要访问公司变量时。

这可能吗?这甚至有意义吗?

3 个答案:

答案 0 :(得分:4)

不,这是不可能的。

不,它也没有意义。也许如果你解释一下你的推理,我们会更好理解。

答案 1 :(得分:4)

不,那是不可能的。您可以做的最接近的事情是提供包装器以仅允许访问TargetCompany中的成员(不是公司引用本身),或者返回内部TargetCompany成员的副本,防止内部的成员被引用(没有真正的值)。

答案 2 :(得分:3)

您可以在报表中公开代理接口,该接口在公司中调用等效接口,并将公司设为私有,以便您完全控制(封装甚至)对Company对象的访问。