Скажем, у меня есть класс с именем '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);
}
}
}
(Некоторый код был опущен для краткости).Очевидно, что компилятор интерпретирует не 'Foo' в предложении 'if' как класс 'Foo', а как метод фабрики.Предполагая, что я не могу изменить имя класса или имя метода фабрики, могу ли я заставить компилятор распознавать 'Foo' как имя класса, а не имя метода?
EDIT Извините, что не упомянул об этом раньше - оба класса находятся в одном и том же пространстве имен, поэтому MyNamespace.Foo.Invert не работает.