静态类作为实例属性

Ton*_*llo 2 c# architecture

我有一个基于接口的类,我希望有一些静态类作为属性.但是,我似乎无法找到一种方法来将静态类用作基于接口的类的实例属性.

public interface IHttpHelp
{
   ItemsManager {get;set;}
}

public static class ItemsManager
{
   //static methods
}

public class HttpHelper
{
   public ItemsManager { get { return ItemsManager;} 
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,因为"ItemsManager像变量一样使用,但它是一个类型错误." 反正以这种方式使用课程吗?

为了深入了解我正在做什么 - 我有一些静态帮助程序类可以访问httpruntime和当前上下文.我目前直接使用它们,但想进入一个将用于IoC的容器类.我可以让它们成为实例类而忘记它,但我想知道有没有办法解决这个问题.

Tho*_*que 11

您不能使用这样的静态类,因为根据定义,您无法创建它的实例,因此您无法从属性返回它.改为使用单身人士:

public class ItemsManager
{
    #region Singleton implementation

    // Make constructor private to avoid instantiation from the outside
    private ItemsManager()
    {
    }

    // Create unique instance
    private static readonly ItemsManager _instance = new ItemsManager();

    // Expose unique instance
    public static ItemsManager Instance
    {
        get { return _instance; }
    }

    #endregion

    // instance methods
    // ...
}

public class HttpHelper
{
    public ItemsManager ItemsManager { get { return ItemsManager.Instance; } }
}
Run Code Online (Sandbox Code Playgroud)