我正在为我的Socket TCP服务器创建一个库。
我希望我的BaseServer类将BaseUser作为通用类型,并将BaseUser作为BaseServer作为通用类型(它们是抽象类)。
两个类都需要在类型的where子句中使用其类型。
我如何设法使其正常工作?
BaseServer.cs
public abstract class BaseServer<UserType> where UserType : BaseUser//Need <BaseServerChildrenType>
{
public List<UserType> Users { get; protected set; }
}
BaseUser.cs
public abstract class BaseUser<ServerType> where ServerType : BaseServer//Need <BaseUserChildrenType>
{
public ServerType server { get; private set; }
}
答案 0 :(得分:0)
也许可以帮助您
public interface IBaseUser
{ }
public interface IBaseServer
{ }
public abstract class BaseServer<UserType> where UserType : IBaseUser//Need <BaseServerChildrenType>
{
public List<UserType> Users { get; protected set; }
}
public abstract class BaseUser<ServerType> where ServerType : IBaseServer//Need <BaseUserChildrenType>
{
public ServerType server { get; private set; }
}
public class Server1 : BaseServer<User1>, IBaseServer
{ }
public class User1 : BaseUser<Server1>, IBaseUser
{ }
选项2,因此您无需在任何派生类中实现接口:
public interface IBaseUser
{ }
public interface IBaseServer
{ }
public abstract class BaseServer<UserType> :IBaseServer where UserType : IBaseUser
{
public List<UserType> Users { get; protected set; }
}
public abstract class BaseUser<ServerType> :IBaseUser where ServerType : IBaseServer
{
public ServerType server { get; private set; }
}
public class Server1 : BaseServer<User1>
{ }
public class User1 : BaseUser<Server1>
{ }