Skip to main content
 首页 » 编程设计

C# 访问被局部属性隐藏的静态方法

2024年08月12日31lidabo

我敢肯定这个问题已经有人问过了,但我似乎找不到答案。我需要知道如何访问静态方法,当它在其中定义的类已被具有相同名称的实例方法隐藏时。

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

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'被方法名隐藏了,所以我不能直接调用静态方法。

请您参考如下方法:

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

YourNamespace.Plan.Generate 

<子> 也就是说,静态方法不好。让自己成为一个 IPlanFactory,将 PlanFactory 绑定(bind)到它,然后让依赖注入(inject)完成剩下的工作(假设您使用的是构造函数注入(inject),而不是那种愚蠢的依赖解析器)。现在它是明确的 _planFactory.Generate(...) 并且您刚刚提高了可测试性。给自己加薪!