我正在尝试使用连接客户端和服务器组件的接口将现有的 C# 项目移植到新的分布式项目(这是一个用于大学练习的 Sokoban 游戏)。
这是我的问题:
在一个组件中,比如:级别.cs,我有:
水平.cs
namespace Sokoban
{
public enum MoveDirection { Right, Left, Down, Up }
public class Level
{
private MoveDirection sokoDirection = MoveDirection.Right;
...
}
...
}
另一方面,接口:
接口.cs:
namespace Interfaces
{
public class ILevel : MarshalByRefObject
{
---> what should i place here??? <---
}
}
我尝试了以下选项,但没有成功:
接口.cs:
public virtual enum MoveDirection { get; set; }
public virtual enum MoveDirection() { throw new NotImplementedException(); }
等级.cs:
public static enum MoveDirection { return { Right, Left... }; }
public static enum MoveDirection { get { return { right, Left, ...}; } }
public interface ILevel
{
MoveDirection MoveDirection { get; set; }
}
和实施:
public class Level : MarshalByRefObject, ILevel
{
public MoveDirection MoveDirection { get; set; }
}
我是否完全符合这个问题。也许是这种情况,您希望为所有实现接口或使用类的类提供一个枚举。我也尝试通过接口提供枚举。但是没有运气。
我是 C# 初学者,所以我可能微不足道的方法是:
1. 通过抽象类提供它。它可以工作,但是如果最初足以使用接口(编写overwrite
等),则在类定义中会有一些开销。
2. 我的解决方法是在单独的命名空间中提供枚举,即包含在您需要它的任何位置.
例如,在您的情况下:
接口.cs
using Enumerations;
namespace Interfaces
{
interface ILevel : MarshalByRefObject
{
int changeDirection(MoveDirection newDirection);
}
}
namespace Enumerations
{
public enum MoveDirection { Right, Left, Down, Up };
}