Bofore我想问一下我的问题,请阅读下面的课程:
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;
因此,如果我尝试获取“内容”,则可以通过调用
获得LoginResponseresponsePackage.Content
但当我转换类
时LoginResponsePackage responsePackage = (LoginResponsePackage)usopackage;
我无法访问LoginReponse。它只是让我访问例如:BeginInvoke(),Method,Target,Clone() 我不知道它来自哪里..
所以我的问题是我需要在我的代码中更改以直接转换包,以便通过访问“LoginResponsePackage.Content”获得“LoginResponse”
答案 0 :(得分:2)
问题在于这行代码:
public class LoginResponsePackage : JsonPackage<LoginResponse>
此上下文中的LoginResponse
类型并不代表您在LoginResponsePackage
中定义的嵌套类,它指的是类外的某种类型,我想是您的代表那里的方法的描述。您还不在类范围内,因此您必须通过在类外使用的名称来引用嵌套类型:LoginResponsePackage.LoginResponse
。
固定线路:
public class LoginResponsePackage : JsonPackage<LoginResponsePackage.LoginResponse>