2

現在、JavaゲームエンジンをC#に変換しています。パッケージを書き始めるまでは、すべて問題ありませんcom.gej.graphics。c#では、このように書きました。

namespace GECS.Graphics {}

しかし、コンパイラはこのエラーを言います。

'GECS.Graphics' is a 'namespace' but is used like a 'type' (CS0118)
   - C:\Users\sr....ECS\Core\Game.cs:33,36

これは、その行に含まれているテキストです

public virtual void Render(Graphics g) {}

実際のGraphicsクラスはからSystem.Drawingです。

私の要件は、このクラスがユーザーによって拡張されることであり、したがって、ユーザーはそれと競合しないようにする必要があります。

ありがとう

4

3 に答える 3

2

次のように名前空間を使用してクラスにアクセスできます。

public virtual void Render(System.Drawing.Graphics g) { }

名前空間とクラスの名前に競合があるため、Graphics名前空間に別の名前を付けることを検討するか、常に完全修飾名を使用することができます。

于 2013-01-11T04:53:04.373 に答える
1
public virtual void Render(System.Drawing.Graphics g) {}

name という名前のカスタム名前空間も作成しているため、名前空間を指定する必要がありますGraphics

于 2013-01-11T04:54:02.943 に答える
1

標準の名前空間と競合する可能性のある名前空間を作成しないようにします。System.Drawing.Graphicsとの競合を避けるために、名前を完全に使用する必要がありますGECS.Graphics

別の解決策として、ディレクティブを使用して名前空間または型のエイリアスを作成することができます。

例えば:

using DrawingGraphics = System.Drawing.Graphics;

後:

public virtual void Render(DrawingGraphics  g) 
{
}
于 2013-01-11T04:57:59.617 に答える