无法从静态类的单例访问静态方法

时间:2014-02-22 05:42:37

标签: .net c#-4.0 singleton

我的班级有单身人士和方法如下:

public class ProductManager
    {
       private static ProductManager _Value = null;
        public static ProductManager Value
        {
            get { if (_Value == null) _Value = new ProductManager(); return _Value; }
        }


public static void SaveProduct(string productname)
        {
        }
}

我在另一个程序集(SecondAssembly)中有另一个类,它包围了该类,如下所示:

public class BaseManager
    {

        public static FirstAssembly.ProductManager ProductManager
        {
            get
            {
                return FirstAssembly.ProductManager.Value;
            }
        }
}

在同一个程序集(SecondAssembly)中,我想通过BaseManager的这个属性访问ProductManager类的SaveProduct方法。但我无法这样做,它不会出现:

BaseManager.ProductManager.SaveProduct("abc"); // Can't access it.. 

请对我说,为什么我不能这样做?

2 个答案:

答案 0 :(得分:0)

您正尝试通过实例访问静态方法。这是胡说八道。在这种情况下,您不需要实例。您只需拨打ProductManager.SaveProduct(...)

即可

修改
如果您想ProductManager BaseManagerSaveProduct可以SaveProduct实例方法而不是静态方法,或者BaseManager中包含public class BaseManager { ... public static SaveProduct(...) { ProductManager.SaveProduct(...); } }

SaveProduct

在我看来,最好让ProductManager非静态,因为{{1}}无论如何都是单身

答案 1 :(得分:0)

可以从任何地方访问静态方法。

ProductManager.SaveProduct()

SEE HERE