gpt4 book ai didi

c# - 最小起订量和 "as"关键字

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:38 24 4
gpt4 key购买 nike

我正在尝试提供一个模拟来帮助我测试:

ClaimsPrincipal princple = Thread.CurrentPrincipal as ClaimsPrincipal;

但是据我所知,“as”关键字返回 null,即使我可以在调试器中看到 Thread.CurrentPrincipal 是模拟。

为了检验理论,我整理了这个简短的演示:

void Main()
{
var userMock = new Mock<IUser>();
userMock.Setup(w => w.UserId).Returns(1);

var user = userMock.Object as User;

user.Dump(); // null

}

public interface IUser
{
int UserId { get; set; }
}

public class User : IUser
{
public int UserId { get; set; }
}

如何为在后台使用 as 关键字的代码提供最小起订量?

据我了解,也许我需要为代理提供一种回退的方式?

我有点意识到这是不可能的,但想知道人们解决这个问题的方法是什么。

最佳答案

当你创建模拟时

var userMock = new Mock<IUser>();

然后 Moq 动态创建实现 IUser 接口(interface)的类。该类与此接口(interface)的其他实现(如 User 类)无关。这就是为什么模拟对象是 IUser 而不是 User 的原因:

var user = userMock.Object as User; // will be null

关于c# - 最小起订量和 "as"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com