转换泛型类?->令人困惑的结果

我在撒粉

在我想问我的问题之前,请阅读以下课程:

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”

IS4

问题在以下代码行中:

public class LoginResponsePackage : JsonPackage<LoginResponse>

LoginResponse在这种情况下,类型并不表示您在中定义的嵌套类LoginResponsePackage,它是指该类之外的某种类型,我想是从您对那里的方法的描述中得到的委托。您还不在类范围内,因此必须通过将在类外部使用的嵌套类型名称来引用它LoginResponsePackage.LoginResponse
固定电话:

public class LoginResponsePackage : JsonPackage<LoginResponsePackage.LoginResponse>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章