我使用XmlSerializer在一行代码上得到一个BindingFailure:
XmlSerializer s = new XmlSerializer(typeof(CustomXMLSerializeObject));
Run Code Online (Sandbox Code Playgroud)
具有显示名称CustomXMLSerializeObject.XmlSerializers'的程序集无法加载到ID为1的AppDomain的"LoadFrom"绑定上下文中.失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集XMLSerializeObject.XmlSerializers,Version = 1.4.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.该系统找不到指定的文件.
错误很长,继续解释预绑定状态信息以及它试图找到文件的位置.
我试图去序列化的自定义对象相对简单 - 只是一堆私有整数和具有公共访问器的字符串.我有一个私有变量,它是另一个自定义的可序列化类,但它只有私有字符串,其中包含公共访问器.
尴尬的部分?这只在我反序列化时发生.当我序列化对象时,那行代码运行正常.它工作正常,对象被反序列化并完美填充.不要注意任何性能损失或加载时间过长.
这个警告究竟是什么(不是错误或异常,之后程序运行良好)?为什么会这样?如何在不简单禁用警告的情况下阻止它?
在.NET中,我正在尝试使用Encoding.UTF8.GetString
方法,它接受一个字节数组并将其转换为string
.
看起来这种方法忽略了BOM(字节顺序标记),它可能是UTF8字符串的合法二进制表示的一部分,并将其作为字符.
我知道我可以TextReader
根据需要使用a 来消化BOM,但我认为GetString方法应该是某种使我们的代码更短的宏.
我错过了什么吗?这是故意的吗?
这是一个复制代码:
static void Main(string[] args)
{
string s1 = "abc";
byte[] abcWithBom;
using (var ms = new MemoryStream())
using (var sw = new StreamWriter(ms, new UTF8Encoding(true)))
{
sw.Write(s1);
sw.Flush();
abcWithBom = ms.ToArray();
Console.WriteLine(FormatArray(abcWithBom)); // ef, bb, bf, 61, 62, 63
}
byte[] abcWithoutBom;
using (var ms = new MemoryStream())
using (var sw = new StreamWriter(ms, new UTF8Encoding(false)))
{
sw.Write(s1);
sw.Flush();
abcWithoutBom = ms.ToArray();
Console.WriteLine(FormatArray(abcWithoutBom)); // 61, 62, …
Run Code Online (Sandbox Code Playgroud) 我试图序列化一个对象,并将\ 0(空)字符附加到生成的字符串.为什么?
我的代码:
XmlSerializer serializer = new XmlSerializer(typeof(Common.PlanogramSearchOptions));
MemoryStream memStream = new MemoryStream();
serializer.Serialize(memStream, searchOptions);
string xml = Encoding.UTF8.GetString(memStream.GetBuffer()); // appends \0
Run Code Online (Sandbox Code Playgroud)
我的工作是用空字符串替换Null字符
xml.Replace("\0", string.Empty)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我们有一个场景,我们需要计算多个费用组成部分,并需要在插件的Pre和Post阶段之间共享。因此,我们创建了这样的对象。
class FeeCalculation
{
public string TotalFee { get; set; }
public string FilingFee { get; set; }
public string LegalFee { get; set; }
public string RecordFee { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我们已经使用单一费用组成部分和共享变量很好地工作了。尝试分配整个对象时-结果并不理想。
context.SharedVariables.Add("fees", fcObject);
Run Code Online (Sandbox Code Playgroud)
有没有办法达到这个预期的结果?