Vnext Аргумент 1: невозможно преобразовать из строки в System.IO.Stream

c# asp.net asp.net-core

10769 просмотра

1 ответ

148 Репутация автора

Я пытаюсь создать универсальный сериализатор в рамках проекта Vnext, и когда я вызываю конструктор для StreamWriter, он выдает эту ошибку компилятора

Ошибка CS1503 Аргумент 1: невозможно преобразовать из «строки» в «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"
            }
        }
    }
}
Автор: Azran Источник Размещён: 01.01.2015 10:54

Ответы (1)


10 плюса

148 Репутация автора

Решение

Вот ответ от davidfowl

Это потому, что он недоступен в CoreCLR. Вместо этого используйте новый StringWriter (File.OpenWrite (path))

Для дальнейшего использования, где я могу проверить, доступна ли функция или нет?

Проблемы с файлом в хранилище https://github.com/dotnet/corefx . Они смогут уточнить, почему чего-то не хватает в новых рамках. Я считаю, что причина, по которой эта конкретная перегрузка была удалена, была из-за проблем с наложением между новыми пакетами

Сборка, содержащая StreamWriter, не должна напрямую ссылаться на FileStream:

new StreamReader(path)

на самом деле

new StreamReader(new FileStream(path, options)).
Автор: Azran Размещён: 03.01.2015 11:03
Вопросы из категории :
32x32