假设我有一个名为“Foo”的类,有一些静态成员,并且在其他一些类(在同一个命名空间下)有一个同名的工厂方法,它使用这个成员:
namespace MyNamespace
{
public class Foo
{
public static bool Invert = false;
public int A {get; set;}
....
}
public class FooFactory
{
public Foo Foo(int A)
{
if(Foo.Invert) // --> this gives the 'is a 'method', which is not valid in the given context' Error
return new Foo(-A);
else
return new Foo(A);
}
}
}
(为简洁起见,省略了一些代码)。显然,编译器不会将“if”子句中的“Foo”解释为“Foo”类,而是将其解释为工厂方法。假设我不能随意更改类的名称或工厂方法的名称,我可以强制编译器将“Foo”识别为类名而不是方法名吗?
编辑很抱歉之前没有提到这一点 - 两个类都在同一个命名空间中,因此 MyNamespace.Foo.Invert 不能解决问题。