我正在尝试创建一个带有Vnext项目的通用序列化程序,当我调用StreamWriter的构造函数时,它会抛出此编译器错误
错误CS1503参数1:无法从'string'转换为 'System.IO.Stream'Test.ASP.NET Core 5.0 Helper.cs 14
即使有一个构造函数允许指定文件的路径作为参数。
这是我的班级文件
using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace Test
{
public static class Helper
{
public static void SerializeToXml<T>(string path, T value)
{
var serializer = new XmlSerializer(typeof(T));
using (var stream = new StreamWriter(path)) // ERROR OCCURS HERE
{
using (var writer = XmlWriter.Create(stream))
{
serializer.Serialize(writer, value);
}
}
}
}
}
这是我的project.json文件
{
"version": "1.0.0-*",
"dependencies": {
},
"commands": {
"run": "run"
},
"frameworks": {
"aspnet50": {
"dependencies": {
},
"frameworkAssemblies": {
"System.Xml": "4.0.0.0"
}
},
"aspnetcore50": {
"dependencies": {
"System.Console": "4.0.0-beta-22231",
"System.Xml.XmlSerializer": "4.0.0-beta-22231",
"System.Collections": "4.0.10-beta-22422",
"System.Xml.ReaderWriter": "4.0.10-beta-22231",
"System.IO": "4.0.10-beta-22231"
}
}
}
}
答案 0 :(得分:10)
以下是davidfowl
的答案那是因为它在CoreCLR上不可用。使用新的 StringWriter(File.OpenWrite(path))改为
以备参考,我可以在哪里查看功能是否可用?
https://github.com/dotnet/corefx存储库上的文件问题。他们 将能够澄清新框架中缺少原因的原因。一世 相信这个特殊超载被删除的原因是因为 新包之间的分层问题。
包含StreamWriter的程序集不应该是直接的 引用FileStream:
new StreamReader(path)
实际上
new StreamReader(new FileStream(path, options)).