ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

switch类型模式

2022-05-11 21:01:46  阅读:91  来源: 互联网

标签:string Data IFormatCreater 模式 class switch 类型 data public


  switch的模式中有一种叫类型模式,可以根据switch的类型来执行对应的case,这点在代码中用到的比较频繁,特别是在对应同类型对象的操作中。本例是把一组数据,转成一种格式,就是很简单的使用switch类型模式实现,具体见代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SwitchDemo;

public class ClassOne
{
    public void Run()
    {
        var entity = new YamlFormatCreater();
        var data = new Data();
        Console.WriteLine(GetData(entity, data));
    }
    public string GetDataFormat(IFormatCreater entity, Data data) => entity switch
    {
        CSVFormatCreater csvFormatCreater => csvFormatCreater.ToCSV(data),
        JsonFormatCreater jsonFormatCreater => jsonFormatCreater.ToJson(data),
        XMLFormatCreater xmlFormatCreater => xmlFormatCreater.ToXML(data),
        YamlFormatCreater yamlFormatCreater => yamlFormatCreater.ToYAML(data),
        _ => "this format is not adapted"
    };
}

public class Data
{
    public int ID { get; set; }
    public string? Name { get; set; }
    public string? Model { get; set; }
}
public interface IFormatCreater
{ }

public class CSVFormatCreater : IFormatCreater
{
    public string ToCSV(Data data)
    {
        return "To CSV";
    }
}
public class JsonFormatCreater : IFormatCreater
{
    public string ToJson(Data data)
    {
        return "To JSON";
    }
}
public class XMLFormatCreater : IFormatCreater
{
    public string ToXML(Data data)
    {
        return "To XML";
    }
}
public class YamlFormatCreater : IFormatCreater
{
    public string ToYAML(Data data)
    {
        return "To YAML";
    }
}
 想要更快更方便的了解相关知识,可以关注微信公众号   

标签:string,Data,IFormatCreater,模式,class,switch,类型,data,public
来源: https://www.cnblogs.com/axzxs2001/p/16259773.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有