Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;无法强制转换类型为';System.String';输入';工资单.EIR'&引用;_C# - Fatal编程技术网

C# &引用;无法强制转换类型为';System.String';输入';工资单.EIR'&引用;

C# &引用;无法强制转换类型为';System.String';输入';工资单.EIR'&引用;,c#,C#,好的,我有一个类“EIR”,它是基于其基类“ExpenseReport”的列表,如下所示: 我如何将iRost转换到Payroll.EIR,这是一个类?有没有办法将序列化字符串转换为类?您的问题已经出现在WriteToFile函数中,您实际上是在序列化文件名而不是类。我没有试过,但这应该有用: public void WriteToFile(string filename) { try { BinaryFormatter formatter = new Binar

好的,我有一个类“EIR”,它是基于其基类“ExpenseReport”的列表,如下所示:


我如何将iRost转换到Payroll.EIR,这是一个类?有没有办法将序列化字符串转换为类?

您的问题已经出现在
WriteToFile
函数中,您实际上是在序列化文件名而不是类。我没有试过,但这应该有用:

public void WriteToFile(string filename)
{
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None); // filename parameter instead of fixed path
        formatter.Serialize(stream, this); // class instance instead of filename parameter
        stream.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine("Unable to serialize Expenses: {0}", ex.Message);
    }
}

public static EIR ReadFromFile(string filename)
{
    EIR iRost = new EIR();
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); // filename parameter instead of fixed path
        iRost = (EIR)formatter.Deserialize(stream);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Unable to deserialize Expenses: {0}", ex.Message);
    }

    return iRost;            
}            

您确定静默捕获所有异常并只向控制台写入消息是一个好主意吗?

格式化程序。序列化(流,文件名)
爆炸式的爆炸!哇!这只是其中一件非常明显的事情,但我非常确定这是在反序列化方法中发生的。。。谢谢
try
        {
            EIR expensesUpdated = EIR.ReadFromFile("D:\\myExpensesUpdated.bin");
            foreach (var e in expensesUpdated) Console.WriteLine("Updated: {0}", e.ToString());
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
public void WriteToFile(string filename)
{
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None); // filename parameter instead of fixed path
        formatter.Serialize(stream, this); // class instance instead of filename parameter
        stream.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine("Unable to serialize Expenses: {0}", ex.Message);
    }
}

public static EIR ReadFromFile(string filename)
{
    EIR iRost = new EIR();
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); // filename parameter instead of fixed path
        iRost = (EIR)formatter.Deserialize(stream);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Unable to deserialize Expenses: {0}", ex.Message);
    }

    return iRost;            
}