我敢肯定这个问题已经有人问过了,但我似乎找不到答案。我需要知道如何访问静态方法,当它在其中定义的类已被具有相同名称的实例方法隐藏时。
我有一个公开静态方法的类,如下所示:
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(...)
并且您刚刚提高了可测试性。给自己加薪!
子>