c# - 最小起订量:无法转换到界面

标签 c# asp.net-mvc moq

今天早些时候我问了这个question .

因此,由于 moq 从接口(interface)创建了它自己的类,我无法将其转换为不同的类。

所以我想知道如果我创建一个 ICustomPrincipal 并尝试转换为它会怎样。

这是我的模拟的样子:

var MockHttpContext = new Mock<HttpContextBase>();
var MockPrincipal = new Mock<ICustomPrincipal>();

MockHttpContext.SetupGet(h => h.User).Returns(MockPrincipal.Object);

在我尝试测试的方法中,以下代码给出了错误(再次):

var user = (ICustomPrincipal)httpContext.User;

错误如下:

Unable to cast object of type 'IPrincipalProxy4081807111564298854aabfc890edcc8' 
to type 'MyProject.Web.ICustomPrincipal'.

我想我仍然需要一些接口(interface)和最小起订量的练习,但我不应该能够将最小起订量创建的类转换回 ICustomPrincipal 吗?我知道 httpContext.User 返回一个 IPrincipal,所以那里可能丢失了一些东西?

好吧,如果有人能帮助我,我将不胜感激。

泡菜

编辑:
根据要求,我正在测试的方法的完整代码。它还没有完成,但这是我到目前为止所拥有的:

public bool AuthorizeCore(HttpContextBase httpContext)
{
    if (httpContext == null)
    {
        throw new ArgumentNullException("httpContext");
    }

    var user = (ICustomPrincipal)httpContext.User;

    if (!user.Identity.IsAuthenticated)
    {
        return false;
    }

    return true;
}

编辑2:

似乎如果我使用 Thread.CurrentPrincipal 而不是 HttpContext.current.user 我可以毫无问题地转换它。现在阅读两者之间的区别。

最佳答案

关于c# - 最小起订量:无法转换到界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776949/

相关文章:

c# - 需要帮助以更好地理解最小起订量

c# - DataContract 无法序列化集合成员

asp.net-mvc - ASP.NET MVC 自定义控件

asp.net - 上传时文件大小超过默认大小

asp.net-mvc - 在 nopcommerce 2.8 中使用 Telerik 插件自定义网格

c# - 使用 Moq 验证使用不同状态的对象的方法调用

c# - 通过代码C# UWP旋转位图

C# 删除 typeof 并仅将类名传递给函数

c# - 无论大小如何,如果源较新,则只复制 MSBuild 复制任务

c# - Moq 使用 ReturnsAsync 并修改 It.IsAny 输入参数