我有一个名为
在
CreateMessage类
的类,它的作用是处理来自TCPClient
的传入消息,获取用户类型并返回该消息应如何格式化给其调用的method
。在
GetUserType方法
中,我想要将UserBaseType
作为参数传递,该参数是一个generic abstract class
,需要使用UserType
的Type
。 但是,它报错了:
我仍然在努力理解如何使用泛型和约束条件,因此不知道是否错误地进行了操作。 我已经进行了一些探索,尝试找到适合我尝试实现的解决方案,但没有找到。Using the generic type 'UserTypeBase' requires one type argument.
internal class CreateMessage
{
internal static string user;
internal static string message;
internal CreateMessage(string data)
{
user = Lists.users[data.Substring(1, 3)];
message = data.Substring(5, data.Length - 5);
}
private UserType GetUserType(UserTypeBase type)
{
return type.CreateType();
}
internal string Message()
{
UserType Type = null;
if (user.Contains("[M]"))
Type = GetUserType(UserMod);
else if (user.Contains("[B]"))
Type = GetUserType(UserVIP);
else
Type = GetUserType(UserRegular);
return Type.Message();
}
}
UserBaseType.cs
internal abstract class UserTypeBase<T> where T: UserType
{
public abstract string User { get; }
public abstract string Message { get; }
public abstract T CreateType();
}
private T GetUserType<T>(UserTypeBase<T> type) where T : UserType
这样你就可以得到一个强类型的函数结果。 - Scott Chamberlain