[英]Any way of making 2 abstract classes with a generic type of the other one?
我正在为我的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; }
}
也许可以帮助:
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>
{ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.