C#访问本地属性隐藏的静态方法

时间:2014-11-11 10:47:33

标签: c#

我确信这肯定已经被问到了,但我似乎无法找到答案。我需要知道如何访问一个静态方法,当它定义的类被同名的实例方法隐藏时。

我有一个暴露静态方法的类,如下所示:

public class Plan
{
    public static Plan Generate(Project project)
    {
        var plan = new Plan();
        // ... 
        return plan;
    }
}

然后我有另一个类,其中包含一个名为“Plan”的方法,我想从中调用上面提到的静态方法:

public ActionResult Plan(int id)
{
    // ...
    var plan = Plan.Generate(project);
    // ...
}

问题是类名'Plan'被方法名隐藏,所以我不能直接调用静态方法。

1 个答案:

答案 0 :(得分:3)

使用类型名称限定您对Plan类型的访问权限。例如:

YourNamespace.Plan.Generate

<子> 也就是说,静态方法很糟糕。让自己成为IPlanFactory,绑定PlanFactory并让依赖注入完成剩下的工作(假设您正在使用构造函数注入,而不是那些头发式依赖解析器的东西)。现在它明确地_planFactory.Generate(...)并且你只是增加了可测试性。给自己加薪!