C# 将变量设为引用类型

C# 将变量设为引用类型,c#,.net,struct,moq,C#,.net,Struct,Moq,我的C#测试中有以下模拟: private Mock\u mockOffsetPosition=new Mock(50) Offset是一个汇合的.Kafka.Offset结构 它给了我这个错误: CS0452:类型“Offset”必须是引用类型,才能将其用作泛型类型或方法“Mock”中的参数“T” 我该如何解决这个问题?你不能嘲笑它。让我们看看: 在单元测试中,模拟对象可以模拟复杂对象、真实对象的行为,因此在真实对象不可行或不可能合并时非常有用 因此,不用模拟,只需使用所需的值初始化并传递真正

我的C#测试中有以下模拟:

private Mock\u mockOffsetPosition=new Mock(50)

Offset
是一个汇合的.Kafka.Offset结构

它给了我这个错误:

CS0452:类型“Offset”必须是引用类型,才能将其用作泛型类型或方法“Mock”中的参数“T”


我该如何解决这个问题?

你不能嘲笑它。让我们看看:

在单元测试中,模拟对象可以模拟复杂对象真实对象的行为,因此在真实对象不可行或不可能合并时非常有用

因此,不用模拟,只需使用所需的值初始化并传递真正的结构。所有值类型都应如此

private Offset _mockOffsetPosition = new Offset(50);

为什么需要模拟结构?用真货就行了。大多数情况下,您模拟的界面过于复杂,无法使用实类型,您只需要其中的一部分。除非您可以更改
Confluent.Kafka.Offset
的代码,否则无法将其更改为
。我不知道你为什么嘲笑它,因为它是一个非常简单的对象。如果你不知道一个值和一个引用类型之间的区别,你就不应该从模拟接口开始。抱歉,如何使结构成为引用类型?只需将其设置为框
(对象)偏移量
,但这肯定是一个X/Y问题