いくつかの静的メンバーを持つ「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' をメソッド名ではなくクラス名として認識させることはできますか?
EDITこれについて言及しなかったことをお詫びします-両方のクラスが同じ名前空間にあるため、 MyNamespace.Foo.Invert はそのトリックを行いません。