首页 > 编程语言 >c# csharp 对象序列化

c# csharp 对象序列化

时间:2024-01-15 22:24:30浏览次数:37  
标签:set get c# float Column csharp 序列化 True public

对象序列化

要将一个序列化对象存储起来,您可以使用C#中的序列化和反序列化功能。以下是一个示例代码,它演示了如何将一个序列化对象存储到文件中:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace MyNamespace
{
    [Serializable]
    public class MyObject
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            var myObject = new MyObject { Id = 1, Name = "John Doe" };

            var formatter = new BinaryFormatter();
            using (var stream = new FileStream("myobject.bin", FileMode.Create, FileAccess.Write))
            {
                formatter.Serialize(stream, myObject);
            }

            using (var stream = new FileStream("myobject.bin", FileMode.Open, FileAccess.Read))
            {
                var deserializedObject = (MyObject)formatter.Deserialize(stream);
                Console.WriteLine($"Id: {deserializedObject.Id}, Name: {deserializedObject.Name}");
            }
        }
    }
}

在上面的代码中,我们创建了一个名为MyObject的类,该类表示要序列化的对象。我们还创建了一个名为Program的类,该类包含一个名为Main的方法。
在Main方法中,我们创建了一个名为myObject的对象,并使用BinaryFormatter类将其序列化到文件中。然后,我们使用BinaryFormatter类将文件反序列化为对象,并将其打印到控制台。
希望这可以帮助您!

将下面python中的sqlalchemy的entity改成C#v所ef core的entity


class Battery(MappedBase):
    """电池电量模型类"""
    __tablename__ = "battery"
    id: Mapped[int] = mapped_column(primary_key=True, index=True, autoincrement=True, comment="主键id")
    ip: Mapped[str] = mapped_column(String(20), nullable=False, comment="AGV车的IP地址")
    name: Mapped[str] = mapped_column(String(20), nullable=True, comment="AGV车的名称")
    # level
    start_level: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="初始电量值")
    end_level: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束电量值")
    # temp
    start_temp: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="开始充电时的电池温度")
    end_temp: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束充电时的电池温度")
    # voltage
    start_voltage: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="开始充电时的电池电压")
    end_voltage: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束充电时的电池电压")
    # cycle
    start_cycle: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="开始充电的充电次数")
    end_cycle: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="结束充电的充电次数")
    # time
    start_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True, comment="充电的初始时间")
    end_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True, comment="充电的初始时间")
    # duration
    duration: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="充电时长,单位s")
    # interrupt
    interrupt: Mapped[bool] = mapped_column(Boolean, nullable=True, default=0, comment="是否是手动中断充电,默认是自动离开充电")
    charging: Mapped[bool] = mapped_column(Boolean, nullable=True, default=0, comment="是否正在充电")

以下是将上述Python代码转换为C# EF Core的实体类的示例代码:

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MyNamespace
{
    [Table("battery")]
    public class Battery
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Required]
        [Column("ip", TypeName = "varchar(20)")]
        public string Ip { get; set; }

        [Column("name", TypeName = "varchar(20)")]
        public string Name { get; set; }

        [Column("start_level", TypeName = "float")]
        public float StartLevel { get; set; }

        [Column("end_level", TypeName = "float")]
        public float EndLevel { get; set; }

        [Column("start_temp", TypeName = "float")]
        public float StartTemp { get; set; }

        [Column("end_temp", TypeName = "float")]
        public float EndTemp { get; set; }

        [Column("start_voltage", TypeName = "float")]
        public float StartVoltage { get; set; }

        [Column("end_voltage", TypeName = "float")]
        public float EndVoltage { get; set; }

        [Column("start_cycle", TypeName = "int")]
        public int StartCycle { get; set; }

        [Column("end_cycle", TypeName = "int")]
        public int EndCycle { get; set; }

        [Column("start_time", TypeName = "datetime")]
        public DateTime StartTime { get; set; }

        [Column("end_time", TypeName = "datetime")]
        public DateTime EndTime { get; set; }

        [Column("duration", TypeName = "int")]
        public int Duration { get; set; }

        [Column("interrupt", TypeName = "bit")]
        public bool Interrupt { get; set; }

        [Column("charging", TypeName = "bit")]
        public bool Charging { get; set; }
    }
}

在上面的代码中,我们创建了一个名为Battery的类,该类表示要映射到数据库表的实体。我们还使用Table、Key和Column属性来指定表名、主键和列名。
请注意,我们使用Required属性将Ip属性标记为必需的,并使用TypeName属性指定列的数据类型。我们还使用Column属性指定列名。

标签:set,get,c#,float,Column,csharp,序列化,True,public
From: https://www.cnblogs.com/zhuoss/p/17966532

相关文章

  • CF1409D题解
    思路因为数据较大,使用字符串读入。考虑使用贪心。先统计出当前数码之和。然后从低位往高位枚举,看一下把当前位改了之后是否小于等于\(s\)。如果小于的话,则统计出把当前位往后所有位都改为0,\(k\)为多少,求出的\(k\)就是最优解。说明一下为什么要从低位往高位枚举,这样如果成......
  • AT_arc060_c题解
    纪念模拟考考挂。思路首先二分查找出当前点往后走最远能去哪个点,当前点为\(i\),记最远能去的那个点为\(nt_i\)。考虑建一棵树,将\(nt_i\)设为\(i\)点的父节点。暴力的话直接从当前点往上找,找到目标节点看几次就好了。但显然是过不了的。考虑使用倍增优化。设\(g_{i,j}......
  • cpu过高什么原因?怎么排查?
    运行大型程序或应用程序:当计算机运行大型程序或应用程序时,CPU需要处理更多的数据和指令,因此CPU占用率会相应地增加。病毒或恶意软件:某些病毒或恶意软件会占用计算机的CPU资源来执行恶意任务,例如加密文件或执行网络攻击。软件或驱动程序错误:某些软件或驱动程序可能存在缺陷,导致C......
  • csharp c# http request get post put delete header respons json 网络请求
    C#中如何模拟一个post请求使用HttpClient代替。以下是修改后的代码示例:usingSystem;usingSystem.Net.Http;usingSystem.Text.Json;classHttpPostExample{privateasyncTask<string>HttpPost(stringUrl,objectpostData){stringpostDataStr=J......
  • 一、windows安装opencv,并使用pycharm开发
    OpenCV入门毕设需要用到人脸识别,利用寒假学习下opencv的基本操作,希望可以有所收获安装python环境官网,下载安装exe文件,运行后选择添加path,安装成功结果如下:安装pycharm下载地址安装opencv命令行下运行:pipinstallopencv-python成功安装结果如下:无任何报错即为安装成功......
  • 监控复制:PG_STAT_REPLICATION
    PostgreSQL复制(同步和异步复制)是数据库社区中最广泛使用的功能之一。如今,人们正在构建高可用性集群或使用复制来创建只读副本来分散工作负载。这里需要注意的是,如果您使用复制,则必须确保您的集群受到正确监控。这篇文章的目的是解释一些基础知识,以确保您的PostgreSQL集群保持......
  • 【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小
    问题描述当应用部署到微软云Azure后,如果遇见本地访问AzureAppService应用慢或者是调用第三方接口慢的时候,有什么好的调试方法呢?来判断具体时那一段请求耗时呢?问题解答当然浏览器本身的开发者工具(F12)就是一种非常好的工具。当时,当安装浏览器不方便时,curl就是一个非常好......
  • VACUUM和ANALYZE最佳实践技巧
    概要VACUUM和ANALYZE是PostgreSQL数据库两个最重要的维护操作。VACUUM用于回收表中“死元组”占用的空间。当删除或更新记录(先删除后插入)时,会生成死元组。PostgreSQL不会从表中物理删除旧行,而是在其上放置一个“标记”,以便查询不会返回该行。当vacuum进程运行时,这些死元......
  • Redis - Sorted Set Use Cases
         ......
  • spring Cloud 有哪些组件?
    Eureka:服务注册与发现,每个服务都向eureka提供自己的ip地址,端口号,协议,通信协议,eureka将各个服务维护到一个服务清单中(双层map,第一层key为服务名,第二层key为实例名),同时对服务维持心跳,剔除不可用的服务。发现:eurkeka注册的服务之间不用指定服务的地址,而是通过服务名向注册中心咨询,......