错误的重载构造函数

时间:2017-03-01 23:05:28

标签: c# azure

我正在使用Azure Storage SDK中的类调用CloudQueueMessage,它具有以下两个构造函数:

public CloudQueueMessage(byte[] content);
public CloudQueueMessage(string content);

我有一些二进制数据要传递给这个类,因此我想使用接受byte[]的构造函数。这是我正在尝试做的一个人为的例子:

byte[] data = ... binary data goes here ...;
var cloudMessage = new CloudQueueMessage(data);

令人惊讶的是,我在Visual Studio中遇到以下编译器错误:

  

CS1503参数1:无法从'byte []'转换为'string'

好像编译器试图使用接受字符串的重载,当然,无法将我的字节数组转换为字符串。

请注意,我不想将我的字节数组转换为字符串,我只需要帮助找出编译器没有使用适当的构造函数的原因。

如果重要:我使用的是Azure存储nuget软件包的8.1.1版。

更新  这是我在Visual Studio中按F12时看到的内容(请注意byte[]构造函数已突出显示): f12 from Visual Studio

2 个答案:

答案 0 :(得分:1)

您可以深入了解构造函数的定义并查看它的引用位置吗?听起来我觉得某处存在版本冲突。

在根应用程序的bin文件夹中的Microsoft.WindowsAzure.Storage.dll上使用ILDASM,然后导航到CloudQueueMessage类,看看是否可以找到相同的构造函数。您的应用似乎在某种程度上在运行时使用了早期版本。

您是否也清除了所有obj和bin文件夹和包文件夹?

答案 1 :(得分:0)

我终于发现public CloudQueueMessage(byte[] content)仅在.NET 4.x中可用,并且它在.NET Core中不可用(我想知道为什么在.NET核心中删除了这个重载的构造函数)。< / p>

因此,我在.NET Core中使用以下解决方法:

var cloudMessage = new CloudQueueMessage(string.Empty); cloudMessage.SetMessageContent(data);