C# 枚举的接口

C# 枚举的接口,c#,interface,enums,remoting,.net-remoting,C#,Interface,Enums,Remoting,.net Remoting,我正在尝试将一个现有的C#项目移植到一个新的分布式项目,使用连接客户端和服务器组件的接口(这是一个用于大学练习的Sokoban游戏) 这是我的问题: 在一个组件中,例如:Level.cs,我有: Level.cs namespace Sokoban { public enum MoveDirection { Right, Left, Down, Up } public class Level { private MoveDirection sokoDirection = Mo

我正在尝试将一个现有的C#项目移植到一个新的分布式项目,使用连接客户端和服务器组件的接口(这是一个用于大学练习的Sokoban游戏)

这是我的问题:

在一个组件中,例如:Level.cs,我有:

Level.cs

namespace Sokoban
{
public enum MoveDirection { Right, Left, Down, Up }


public class Level
    {
    private MoveDirection sokoDirection = MoveDirection.Right;
    ...
    }
...
}
另一方面,接口:

Interfaces.cs:

namespace Interfaces
    {
    public class ILevel : MarshalByRefObject
        {
        ---> what should i place here??? <---
        }
    }
public virtual enum MoveDirection { get; set; }
public virtual enum MoveDirection() { throw new NotImplementedException(); }
C级:

public static enum MoveDirection { return { Right, Left... }; }
public static enum MoveDirection { get { return { right, Left, ...}; } }
以及实施:

public class Level : MarshalByRefObject, ILevel
{
     public MoveDirection MoveDirection { get; set; }    
}
以及实施:

public class Level : MarshalByRefObject, ILevel
{
     public MoveDirection MoveDirection { get; set; }    
}

我不知道我是否完全符合这个问题。 可能是这样,您希望为实现接口或使用类的所有类提供枚举。 我也尝试过通过接口提供枚举。但是没有运气。

我是一名C#初学者,所以我的方法可能很简单:
1.通过抽象类提供它。它可以工作,但如果类定义最初足以使用接口(write
overwrite
等),则会在类定义中产生一点开销。
2.我的解决方法是在一个单独的名称空间中提供枚举,该名称空间包括您需要它的任何地方
在您的情况下,例如:


Interfaces.cs

using Enumerations;
namespace Interfaces
{
    interface ILevel : MarshalByRefObject
    {
        int changeDirection(MoveDirection newDirection);
    }
}
namespace Enumerations
{
    public enum MoveDirection { Right, Left, Down, Up };
}

我不知道我是否完全符合这个问题。 可能是这样,您希望为实现接口或使用类的所有类提供枚举。 我也尝试过通过接口提供枚举。但是没有运气。

我是一名C#初学者,所以我的方法可能很简单:
1.通过抽象类提供它。它可以工作,但如果类定义最初足以使用接口(write
overwrite
等),则会在类定义中产生一点开销。
2.我的解决方法是在一个单独的名称空间中提供枚举,该名称空间包括您需要它的任何地方
在您的情况下,例如:


Interfaces.cs

using Enumerations;
namespace Interfaces
{
    interface ILevel : MarshalByRefObject
    {
        int changeDirection(MoveDirection newDirection);
    }
}
namespace Enumerations
{
    public enum MoveDirection { Right, Left, Down, Up };
}


为什么要使用
MarshallByRefObject
?你在尝试使用远程处理吗?远程处理是一种遗留技术,保留它是为了与现有应用程序向后兼容,不建议用于新的开发。现在应该使用WCF或ASP.NET Web API开发分布式应用程序。请参见顶部的注释以获取证据。嗨,约翰!感谢您的即时回复!还有,为什么要使用
MarshalByRefObject
?我正在为序列化钱包使用Marshal。你说得对:我在使用远程处理。别再悲伤了,别再这样做了。远程处理很古老,很久以前就被WCF取代了。您应该尽快停止使用远程处理。为什么要使用
MarshalByRefObject
?你在尝试使用远程处理吗?远程处理是一种遗留技术,保留它是为了与现有应用程序向后兼容,不建议用于新的开发。现在应该使用WCF或ASP.NET Web API开发分布式应用程序。请参见顶部的注释以获取证据。嗨,约翰!感谢您的即时回复!还有,为什么要使用
MarshalByRefObject
?我正在为序列化钱包使用Marshal。你说得对:我在使用远程处理。别再悲伤了,别再这样做了。远程处理很古老,很久以前就被WCF取代了。你应该尽快停止使用远程处理。嗨!我试过了,但VisualStudio抱怨:语法错误,应该是:“,”。它说它在哪里丢失了?您可能需要发布完整的代码。这个问题对我来说确实不清楚,但可能他想要Soko的名字,就像在
公共接口ILevel{MoveDirection-SokoDirection{get;set;}}
中实现:
公共类级别:MarshallByRefObject,ILevel{public MoveDirection-SokoDirection{get;set;}
。嗨!这似乎接近解决方案。我已经试过了,现在的问题是://Error advice:“Interfaces.ILevel.MoveDirection是一个属性,但被用作一个类型”:public MoveDirection MoveDirection{get;set}。同样,我们需要剩下的代码。可能是你试图在类定义中间的某个地方使用回音。我试过了,但VisualStudio抱怨:语法错误,应该是:“,”。它说它在哪里丢失了?您可能需要发布完整的代码。这个问题对我来说确实不清楚,但可能他想要Soko的名字,就像在
公共接口ILevel{MoveDirection-SokoDirection{get;set;}}
中实现:
公共类级别:MarshallByRefObject,ILevel{public MoveDirection-SokoDirection{get;set;}
。嗨!这似乎接近解决方案。我已经试过了,现在的问题是://Error advice:“Interfaces.ILevel.MoveDirection是一个属性,但被用作一个类型”:public MoveDirection MoveDirection{get;set}。同样,我们需要剩下的代码。可能是你试图在类定义中间的某个地方使用回旋。