C#中对象类型转换

对象类型转换通常有两种情况:

  1. 一种是当需要转化对象的类型属于转换目标类型或者转换目标类型的派生类型

  2. 两个对象没有关系,但属性和方法一样。

  3. 针对第一种情况可以使用as进行对象转换

cs 复制代码
public class StudentInfo{
    public string Name;
    public int Age;
    public string Course;
}

public class TeacherInfo{
    public string Name;
    public int Age;
}

public enum Type{
    Student;
    Teacher;
}
public void Test(Type type,object data){
    switch(type){
        case Type.Student:
            StudentInfo studentInfo = data as StudentInfo;
            break;
        case Type.Teacher:
            TeacherInfo teacherInfo = data as TeacherInfo;
            break;
    }
}
  1. 针对第二种情况,可以使用序列化反序列化方法
cs 复制代码
void Main()
{
	TeacherInfo teacher = new TeacherInfo();
	teacher.name = "Jane";
	teacher.age = 20;
	
	StudentInfo studentInfo = ConvertObject<StudentInfo>(teacher);
	studentInfo.name.Dump();
}

public class StudentInfo
{
	public string name;
	public int age;
}

public class TeacherInfo
{
	public string name;
	public int age;
}

public static T ConvertObject<T>(object asObject) where T : new()
{
	//此方法将object对象转换为json字符
	var json = Newtonsoft.Json.JsonConvert.SerializeObject(asObject);
	//再将json字符转换为实体对象
	var t = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);
	return t;
}
相关推荐
小金子会发光3 小时前
C# WinForms 基于 Socket 手搓 Modbus TCP 调试助手(支持 01/02/03/04/05/06/0F/10)
c#·socket·plc·modbus tcp·工业通信
啊哈一半醒3 小时前
Go 语言 Context 全方位详解:原理、实战与避坑
开发语言·后端·golang
铅笔侠_小龙虾3 小时前
rust 学习(9):结构体
开发语言·学习·rust
此生决int4 小时前
深入理解C++系列(11)——stack、queue和priority_queue
开发语言·c++
周杰伦fans4 小时前
数列极限的定义
java·开发语言
2601_963869955 小时前
【计算机毕业设计】基于Java的潮牌购物网站系统的设计与实现
java·开发语言·课程设计
名字还没想好☜5 小时前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone
郝学胜-神的一滴6 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
鸿芯微控科技6 小时前
压电纳米定位分辨率怎么测?噪声、带宽、最小可检测位移与Python分析
开发语言·python·噪声分析·压电执行器·纳米定位·位移测量
会编程的土豆6 小时前
从「锁」到「时间」:后端里几个容易混的概念
java·开发语言·数据库·goland