2

所以我是一个非常业余的程序员,试图按照一些例子来为我正在开发的这个应用程序创建一个小型审计系统。

我们在 C# .NET 4.0 之上使用的框架 (StrataFrame) 要求将审计值存储为字节数组。我遵循了他们论坛的一个小例子,让我这样做了;

        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new                       System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        System.IO.MemoryStream outstream = new System.IO.MemoryStream();

        foreach (DataColumn dc in jobHeaderBO1.CurrentDataTable.Columns)
        {
                if (!dr[dc.ColumnName, DataRowVersion.Original].Equals(dr[dc.ColumnName, DataRowVersion.Current]))
                {
                    formatter.Serialize(outstream, dr[dc.ColumnName, DataRowVersion.Current] + " " + dr[dc.ColumnName, DataRowVersion.Original]);

                    Auditor.ShouldAuditDataChanges(jobHeaderBO1);
                    Auditor.InsertAuditEvent("JOB HEADER", dc.ColumnName + " changed.", outstream.ToArray());
                    Auditor.InsertAuditRecords(jobHeaderBO1);
                }
        }

因此,据我所知,所有工作都有效——记录被插入到适当的表中,当我查看它时,它是一堆垃圾。所以现在我需要向用户展示这些垃圾!

我发现了一些例子,说只是做一些事情,例如:

  string oldv = System.Text.Encoding.UTF8.GetString(adf.adf_OldValue);
  string newv = System.Text.Encoding.UTF8.GetString(adf.adf_NewValue);

当我打印出 oldv 和 newv 时,这些值无法正确显示。一些存储文本的字段大多显示正常,但日期和数字却不行。我想问题是我不知道它是什么类型的编码,我也找不到。有什么建议么?

4

0 回答 0