Bofore我想問一下我的問題,請閱讀follwing類:投射泛型類? - >混亂的結果
public class JsonPackage<A> : USOPackage
{
public JsonPackage(PackageHeader header, object o) : base(header, StringCompressor.CompressString(JsonConvert.SerializeObject(o, Formatting.Indented))) { }
public new A Content
{
get
{
return JsonConvert.DeserializeObject<A>(this.getContentAsString());
}
}
new public string getContentAsString()
{
return StringCompressor.DecompressString(base.getContentAsString());
}
}
(本類包括USOPackage()!)
和第二類:
public class LoginResponsePackage : JsonPackage<LoginResponse>
{
public LoginResponsePackage(LoginResult result) : base(PackageHeader.USO_AUTH_LOGIN_RESPONSE, new LoginResponse(result)) { }
public class LoginResponse
{
public LoginResult Result;
public LoginResponse(LoginResult r)
{
this.Result = r;
}
}
public enum LoginResult
{
OK,
FailedPassword,
FailedUsername,
FailedProtocolVersion
}
}
現在我想將「USOPackage」轉換爲「LoginResponsePackage」以獲取正確類型的包的「內容」。
如果我那樣做:
JsonPackage<LoginResponsePackage.LoginResponse> responsePackage = (JsonPackage<LoginResponsePackage.LoginResponse>)usopackage;
所以,如果我嘗試致電
responsePackage.Content
得到「內容」它的工作原理,這意味着我得到一個LoginResponse但是當我轉換類像那
LoginResponsePackage responsePackage = (LoginResponsePackage)usopackage;
我無法訪問LoginReponse。它只是給我訪問,例如:BeginInvoke(),方法,目標,克隆() 我不知道這是從哪裏來的..
所以我的問題是我必須改變我的代碼被ABLT通過訪問「LoginResponsePackage.Content」
*的BeginInvoke *,*方法*,*目標*等來自*代表*類。 *內容*必須返回一個委託... – IllidanS4
@ IllidanS4我不知道如何意識到/你的意思是返回一個委託? –
查看我的答案,* Content *的類型不是嵌套類型* LoginResponse *。 * LoginResponse *必須是課外的其他內容。 – IllidanS4