在我想问我的问题之前,请阅读以下课程:
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;
因此,如果我尝试获取“内容”,则可以正常工作,这意味着我可以通过调用来获得LoginResponse
responsePackage.Content
但是当我像这样转换类时
LoginResponsePackage responsePackage = (LoginResponsePackage)usopackage;
我无法访问LoginReponse。它只是让我访问例如:BeginInvoke(),Method,Target,Clone(),我不知道它来自哪里。
所以我的问题是我必须在代码中进行什么更改才能直接转换包,以便通过访问“ LoginResponsePackage.Content”得到“ LoginResponse”
问题在以下代码行中:
public class LoginResponsePackage : JsonPackage<LoginResponse>
LoginResponse
在这种情况下,类型并不表示您在中定义的嵌套类LoginResponsePackage
,它是指该类之外的某种类型,我想是从您对那里的方法的描述中得到的委托。您还不在类范围内,因此必须通过将在类外部使用的嵌套类型名称来引用它LoginResponsePackage.LoginResponse
。
固定电话:
public class LoginResponsePackage : JsonPackage<LoginResponsePackage.LoginResponse>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句