GVKun编程网logo

System.Serializable属性在Windows 10 UWP应用程序?(system utilities)

12

在这里,我们将给大家分享关于System.Serializable属性在Windows10UWP应用程序?的知识,让您更了解systemutilities的本质,同时也会涉及到如何更有效地.net–S

在这里,我们将给大家分享关于System.Serializable属性在Windows 10 UWP应用程序?的知识,让您更了解system utilities的本质,同时也会涉及到如何更有效地.net – System.Serializable属性在Windows 10的UWP应用程序中出现?、c# .net core System.Xml.Serialization 需使用包 System.Xml.XmlSerializer补齐属性、c# – System.InvalidOperationException:XmlSerializer属性System.Xml.Serialization.XmlChoiceIdentifierAttribute在Item中无效、Code-Serialization:System.Web.Serialization.JavaScriptSerializer.cs的内容。

本文目录一览:

System.Serializable属性在Windows 10 UWP应用程序?(system utilities)

System.Serializable属性在Windows 10 UWP应用程序?(system utilities)

在尝试将开源库(Aforge.net)移植到UWP时,我发现System.Serializable属性似乎不存在。 UWP的参考工作有点不同,我仍然试图围绕这些变化,所以我希望我只是缺less一些简单的东西。

我的问题是,有人可以确认是否System.Serializable属性工作/应该在UW​​P应用程序中工作? 我试图通过MSDN和其他各种谷歌资源,但无法find任何证据的方式。

任何帮助是极大的赞赏。

更新

它看起来像我可能需要使用DataContract / DataMember属性,而不是像这里提到的便携库一样,可序列化: 可移植类库:build议replace[Serializable]

用C#修饰部分文本文件的代码

C# – 获取打开的窗口不工作,因为它应该

Environment.UserName为同一用户(套pipe)提供不同的结果:替代/转换?

在Elastic Beanstalk上使用Docker部署.NET Core Web API

将unix时间戳转换为正常date(UWP)

思考?

使用Windows Scheduler运行控制台应用程序

编写.NET以外的Windows客户端应用程序的最佳方法是什么?

每个WCF服务的新的ServiceHost?

当文件被locking时,稍后对文件操作进行排队

如何强制WinRT应用程序在Windows 10上全屏?

您需要使用以下属性:

标记课程

[DataContract]

并用标记属性

[DataMember]

要么

[IgnoreDataMember]

例如:

[DataContract] public class Foo { [DataMember] public string Bar { get; set; } [IgnoreDataMember] public string FizzBuzz { get; set; } }

正如上面的代码来自Lance McCarthy:

[DataContract] public class Foo { [DataMember] public string SomeText { get; set; } // .... [IgnoreDataMember] public string FizzBuzz { get; set; } }

另外,你可以使用我自己的扩展名(!!!如果你需要将文件保存到文件而不是字符串,则将MemoryStream更改为FileStream):

public static class Extensions { public static string Serialize<T>(this T obj) { var ms = new MemoryStream(); // Write an object to the Stream and leave it opened using (var writer = XmlDictionaryWriter.CreateTextWriter(ms,Encoding.UTF8,ownsstream: false)) { var ser = new DataContractSerializer(typeof(T)); ser.WriteObject(writer,obj); } // Read serialized string from Stream and close it using (var reader = new StreamReader(ms,Encoding.UTF8)) { ms.Position = 0; return reader.ReadToEnd(); } } public static T Deserialize<T>(this string xml) { var ms = new MemoryStream(); // Write xml content to the Stream and leave it opened using (var writer = new StreamWriter(ms,512,leaveOpen: true)) { writer.Write(xml); writer.Flush(); ms.Position = 0; } // Read Stream to the Serializer and Deserialize and close it using (var reader = XmlDictionaryReader.CreateTextReader(ms,new XmlDictionaryReaderQuotas(),null)) { var ser = new DataContractSerializer(typeof(T)); return (T)ser.Readobject(reader); } } }

然后只是使用这些扩展:

[TestClass] public class UnitTest1 { [TestMethod] public void TestSerializer() { var obj = new Foo() { SomeText = "Sample String",SomeNumber = 135,SomeDate = DateTime.Now,SomeBool = true,}; // Try to serialize to string string xml = obj.Serialize(); // Try to deserialize from string var newObj = xml.Deserialize<Foo>(); Assert.AreEqual(obj.someText,newObj.someText); Assert.AreEqual(obj.someNumber,newObj.someNumber); Assert.AreEqual(obj.someDate,newObj.someDate); Assert.AreEqual(obj.someBool,newObj.someBool); } }

祝你好运队友。

.net – System.Serializable属性在Windows 10的UWP应用程序中出现?

.net – System.Serializable属性在Windows 10的UWP应用程序中出现?

在尝试将开源库(Aforge.net)移植到UWP时,我发现System.Serializable属性似乎不存在.参考UWP工作有点不同,我仍然试图围绕这些变化,所以我希望我只是错过了一些简单的东西.

我的问题是,有人可以确认System.Serializable属性是否适用于UWP应用程序?我已经尝试通过MSDN和各种其他谷歌来源,但找不到任何证据的方式或另一种.

任何帮助是极大的赞赏.

更新
看起来我可能需要使用DataContract / DataMember属性而不是Serializable,就像这里提到的便携式库:Portable class library: recommended replacement for [Serializable]

思考?

您需要使用以下属性:

用类标记

[DataContract]

并标记属性

[DataMember]

要么

[IgnoreDataMember]

例如:

[DataContract]
public class Foo
{
    [DataMember]
    public string Bar { get; set; }

    [IgnoreDataMember]
    public string FizzBuzz { get; set; }
}

c# .net core System.Xml.Serialization 需使用包 System.Xml.XmlSerializer补齐属性

c# .net core System.Xml.Serialization 需使用包 System.Xml.XmlSerializer补齐属性

.net core 也是够奇葩的,去掉了原先许多using System.Xml.Serialization中的接口又以打包的方式提供真没话讲了。 代码:

// [XmlRoot("DeleteResult")]和[XmlElement("Deleted")],.net core中引用`System.Xml.Serialization`是没有提供的这种方法的,你需要安装依赖包System.Xml.XmlSerializer就可以了。
    [XmlRoot("DeleteResult")]
    public class DeleteObjectsResult : GenericResult
    {
        private DeletedObject[] _keys;

        [XmlElement("Deleted")]
        public DeletedObject[] Keys 
        {
            get
            {
                if (EncodingType == null)
                    return _keys;

                bool isUrlEncoding = EncodingType.ToLowerInvariant().Equals(HttpUtils.UrlEncodingType);
                foreach (var key in _keys)
                {
                    key.Key = isUrlEncoding ? HttpUtils.DecodeUri(key.Key) : key.Key;
                }
                return _keys;
            }
            set
            {
                this._keys = value;
            }
        }

c# – System.InvalidOperationException:XmlSerializer属性System.Xml.Serialization.XmlChoiceIdentifierAttribute在Item中无效

c# – System.InvalidOperationException:XmlSerializer属性System.Xml.Serialization.XmlChoiceIdentifierAttribute在Item中无效

我一直在尝试使用WCF连接到某些Web服务,但是当我尝试调用我需要的函数时,我一直收到错误.

这是我得到的错误:

system.invalidOperationException:XmlSerializer属性System.Xml.Serialization.XmlChoiceIdentifierAttribute在Item中无效.当IsWrapped为true时,仅支持XmlElement,XmlArray,XmlArrayItem,XmlAnyAttribute和XmlAnyElement属性.

错误发生在它甚至调用实际服务之前,它甚至不会因为我试图调用的方法而发生.问题在于在WCF生成的类中定义的另一个方法.

我已经能够将问题跟踪到XSD中用于定义WSDL的一段代码:

<xs:choice minOccurs="0">
<xs:element name="additionalSocInd" type="tns:BinaryExpressionType"/>
<xs:element name="skipServiceValidationInd" type="tns:BinaryExpressionType"/>
</xs:choice>

相应的生成代码:

[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil","4.0.30319.1")]
[System.SerializableAttribute()]   [System.Xml.Serialization.XmlTypeAttribute(Namespace="http:integration.sprint.com/interfaces/manageSubscriberServices/v1/manageSubscr" +
    "iberServices.xsd",IncludeInSchema=false)]
public enum ItemChoiceType2
{
    additionalSocInd,skipServiceValidationInd,}

当我注释掉上面的枚举及其所有引用时,该服务有效. XSD中还有其他xs:choice语句似乎没有引起任何问题.

更新:
进一步调查显示,当您有以下情况时:

元素直接在序列元素内定义:

<xs:sequence>
<xs:element ... />
...
<xs:choice minOccurs="0">
<xs:element name="additionalSocInd" type="tns:BinaryExpressionType" />
<xs:element name="skipServiceValidationInd" type="tns:BinaryExpressionType" />
</xs:choice>
...
<xs:element ... />
</xs:sequence>

由svcutil生成的代理会导致上述错误.

当更改为如下所示:

<xs:sequence>
<xs:element ... />
...
<xs:element minOccurs="0" name="myChoiceType" type="tns:MyChoiceType" />
...
<xs:element ... />
</xs:sequence>
<xs:complexType name="MyChoiceType">
<xs:choice>
<xs:element name="additionalSocInd" type="tns:BinaryExpressionType" />
<xs:element name="skipServiceValidationInd" type="tns:BinaryExpressionType" />
</xs:choice>
</xs:complexType>

错误消失了.所以它可能是生成器(svcutil)生成的代码的错误.

我将需要调用WSDL中的所有方法,因此注释掉那些不起作用的方法不是一种选择.我需要在不改变WSDL(客户端,而不是我们的)的情况下使其工作.任何帮助,将不胜感激.

解决方法

尝试使用以下标志从命令行生成代理:
svcutil /wrapped /serializer:XmlSerializer http://wsdl_url/

Code-Serialization:System.Web.Serialization.JavaScriptSerializer.cs

Code-Serialization:System.Web.Serialization.JavaScriptSerializer.cs

ylbtech-Code-Serialization:System.Web.Serialization.JavaScriptSerializer.cs

 

1.返回顶部
1、
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;  //引用序列化类库

public partial class _Default : System.Web.UI.Page
{
    /// <summary>
    /// 应对 Json.NET 使用序列化和反序列化。 为启用 AJAX 的应用程序提供序列化和反序列化功能。
    /// ByYlbtech
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        var RegisteredUsers = new List<Person>();
        RegisteredUsers.Add(new Person() { PersonID = 1, Name = "Bryon Hetrick", Registered = true });
        RegisteredUsers.Add(new Person() { PersonID = 2, Name = "Nicole Wilcox", Registered = true });
        RegisteredUsers.Add(new Person() { PersonID = 3, Name = "Adrian Martinson", Registered = false });
        RegisteredUsers.Add(new Person() { PersonID = 4, Name = "Nora Osborn", Registered = false });

        // 1、创建JavaScriptSerializer
        var serializer = new JavaScriptSerializer();

        // 2、序列化
        // 将对象转换为 JSON 字符串
        var serializedResult = serializer.Serialize(RegisteredUsers);
        // Produces string value of:
        // [
        //     {"PersonID":1,"Name":"Bryon Hetrick","Registered":true},
        //     {"PersonID":2,"Name":"Nicole Wilcox","Registered":true},
        //     {"PersonID":3,"Name":"Adrian Martinson","Registered":false},
        //     {"PersonID":4,"Name":"Nora Osborn","Registered":false}
        // ]

        // 3、反序列化
        // 将指定的 JSON 字符串转换为 T 类型的对象
        var deserializedResult = serializer.Deserialize<List<Person>>(serializedResult);
        // Produces List with 4 Person objects
    }
    /// <summary>
    /// Person实体类
    /// </summary>
    public class Person {
        /// <summary>
        /// 编号【PK】
        /// </summary>
        public int PersonID { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 是否注册
        /// </summary>
        public bool Registered { get; set; }
    }
}
2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
 
 
6.返回顶部
 
warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

关于System.Serializable属性在Windows 10 UWP应用程序?system utilities的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net – System.Serializable属性在Windows 10的UWP应用程序中出现?、c# .net core System.Xml.Serialization 需使用包 System.Xml.XmlSerializer补齐属性、c# – System.InvalidOperationException:XmlSerializer属性System.Xml.Serialization.XmlChoiceIdentifierAttribute在Item中无效、Code-Serialization:System.Web.Serialization.JavaScriptSerializer.cs的相关知识,请在本站寻找。

本文标签: