繁体   English   中英

用另一种泛型类型制作2个抽象类的任何方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM