我确信这肯定已经被问到了,但我似乎无法找到答案。我需要知道如何访问一个静态方法,当它定义的类被同名的实例方法隐藏时。
我有一个暴露静态方法的类,如下所示:
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'被方法名隐藏,所以我不能直接调用静态方法。
答案 0 :(得分:3)
使用类型名称限定您对Plan
类型的访问权限。例如:
YourNamespace.Plan.Generate
<子>
也就是说,静态方法很糟糕。让自己成为IPlanFactory
,绑定PlanFactory
并让依赖注入完成剩下的工作(假设您正在使用构造函数注入,而不是那些头发式依赖解析器的东西)。现在它明确地_planFactory.Generate(...)
并且你只是增加了可测试性。给自己加薪!
子>