接口/泛型

devtools/2024/11/9 0:48:05/

文章目录

  • 项目地址
  • 一、接口的使用
    • 1.1 仿打印机
    • 1.2 防盗门功能
  • 二、泛型
    • 2.1 单例模式
    • 2.2 泛型方法
    • 2.3 泛型类
    • 2.4 泛型约束
    • 2.5 泛型的应用 (分页功能)
  • 三、反射
    • 3.1 反射获取类的属性和方法
  • 四、三层架构(反射解耦)
    • 4.1 项目结构:
    • 4.2 各个项目之间的引用
    • 4.3 Models层编写


项目地址

  • 教程作者: 灵犀7期
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
C# 8

一、接口的使用

  • 共有的功能和属性 :使用类
  • 独有的功能:设置成接口

1.1 仿打印机

  • 描述:打印机有不同颜色的墨盒,不同大小的纸张
  • 设计: 打印机类, 墨盒的接口,纸张接口
  1. 墨盒接口IInkBox
namespace ConsoleApp6
{public interface IInkBox{string GetColor();}
}
  1. 纸张接口IPaper
namespace ConsoleApp6
{public interface IPaper{string GetPaper();}
}
  1. 根据接口实现类
//黑色墨盒类
namespace ConsoleApp6
{public class BlackInkBox : IInkBox{public string GetColor(){return "Black墨盒";}}
}//A4纸类
namespace ConsoleApp6
{internal class A4Paper : IPaper{public string GetPaper(){return "使用A4纸打印";}}
}
  1. 打印机类,只用在添加各个接口的构造方法就行,然后直接使用接口的方法
namespace ConsoleApp6
{public class Printer{public IInkBox? IIntBox { get; set; }public IPaper? IPaper { get; set; }public void Print(string content){Console.WriteLine($"打印机正在使用{IIntBox?.GetColor()} 和{IPaper?.GetPaper()}打印内容:{content}");}}
}
  1. 实例化
Printer p1 = new Printer();
p1.IIntBox = new BlackInkBox();
p1.IPaper = new A4Paper();
string content = "我是一只野猪";
p1.Print(content);   

1.2 防盗门功能

  • 将公同的属性和方法写成继承,将独有的功能写成接口


http://www.ppmy.cn/devtools/132439.html

相关文章

CSS综合练习(学校官网静态网页)

如何设置一个官网网页&#xff1f; 运行代码如下&#xff1a; <style>body{margin: 0px;}.container1{background:url(./top_proc.jpg);width: 100%;height: 150px;}.div1{width: 100%;height: 150px;}#img1{width: 40%;height: 90%;position: relative;top: 3%;left: …

【案例】Excel使用宏来批量插入图片

一、场景介绍 我有一个excel文件&#xff0c;需要通过一列的文件名称&#xff0c;按照规则给批量上传图片附件。 原始文件&#xff1a; 成功后文件&#xff1a; 二、实现方法 1. 使用【wps】工具打开Excel文件&#xff0c;将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…

json字符串与python字典的区别与联系

json字符串与python中自带的字典类型外表长的很像&#xff0c;很容易区分不清楚&#xff0c;它们之间有着本质的区别&#xff0c;可以通过内置的json模块来互相转换。 文章目录 1、Python字典2、JSON数据格式3、JSON与python字典的区别4、JSON与python字典相互转换4.1 json字符…

【在Linux世界中追寻伟大的One Piece】多路转接select

目录 1 -> I/O多路转接之select 1.1 -> 初识select 1.2 -> select函数原型 1.3 -> 关于fd_set结构 1.4 -> 关于timeval结构 2 -> 理解select执行过程 2.1 -> Socket就绪条件 2.2 -> select特点 2.3 -> select缺点 3 -> select使用示例…

FPGA 实现CAN通信

使用FPGASJA 1000芯片实现CAN通信。核心思路是对集成CAN协议的芯片尽心配置&#xff0c;来进行CAN通信。核心顶层代码&#xff1a; //-- Company: //-- Engineer: //-- //-- Create Date: 11:18:25 12/01/2021 //-- Design Name: //-- Module Name: con_port - …

Unity性能优化 -- 性能分析工具

Stats窗口Profiler窗口Memory Profiler其他性能分析工具&#xff08;Physica Debugger 窗口&#xff0c;Import Activity 窗口&#xff0c;Code Coverage 窗口&#xff0c;Profile Analyzer 窗口&#xff0c;IMGUI Debugger 窗口&#xff09; Stats 统级数据窗口 game窗口 可…

用示例来看C2Rust工具的使用和功能介绍

C2Rust可以将C语言的源代码转换成Rust语言的源代码。下面是一个简单的C语言代码示例,以及使用c2Rust工具将其转换为Rust安全代码的过程。 C语言源代码示例 // example.c #include <stdio.h>int add(int a, int b)

leetcode203. Remove Linked List Elements

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val val, and return …