将“this”传递给构造函数

时间:2018-01-24 10:22:56

标签: c# garbage-collection

我有一个基类BLLContext:

public sealed class BLLContext : IDisposable
{
    private LayersSharedObjects _layersSharedObjects = null;
    internal HttpContext httpContext = HttpContext.Current;

    Authorization _authorization = null;

    public Authorization Authorization
    {
        get
        {
            if (_authorization == null)
            {
                _authorization = new Authorization(this);
            }

            return _authorization;
        }
    }

    public BLLContext()
    {

    }
}

我的所有BLL类都有一个构造函数,它应该获得上述类的对象。例如:

public class Authorization : BLLBase
{
    public Authorization(BLLContext bLLContext) : base(bLLContext)
    {
    }
}

在我必须从BLLContext实例的Authorization类中获取一些信息之前,一切都很好。所以我将这部分添加到BLLContext类:

public Authorization Authorization
{
    get
    {
        if (_authorization == null)
        {
            _authorization = new Authorization(this);
        }
        return _authorization;
    }
}

但是因为授权类必须获取BLLContext并且我在BLLContext中,所以我将“this”传递给Authorization构造函数。

有人可以解释它是否适用于循环引用?似乎不是在使用.Net Profiler进行检查时。

我应该怎么做才能避免这种情况但仍然通过“这个”并保持当前的结构?该系统运行良好,没有任何重大问题。

0 个答案:

没有答案