CreateMessage class
私はTCPClient
からの着信メッセージを処理し、ユーザータイプを取得し、メッセージをどのように呼び出してmethod
にフォーマットするかを返すことを意図しています。方法GetUserType
でC#メソッドのパラメータとして汎用クラスを渡す
、私はUserType
のType
をとるgeneric abstract class
あるパラメータとしてUserBaseType
を渡したいです。しかし、それは私にエラーを与える:
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(UserTypeBase タイプ)T:UserType'にしたいでしょう。 –