摘要:
维基百科说:“依赖注入是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是
阅读全文
posted @ 2021-11-08 19:24
小林野夫
阅读(1387)
推荐(0)
摘要:
概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。 分层(tier) 概念 表现层(UI) 通俗讲就是展现给用户的界面,用于显示数据和接受用
阅读全文
posted @ 2021-11-08 17:03
小林野夫
阅读(790)
推荐(0)
摘要:
官方:https://docs.microsoft.com/zh-cn/visualstudio/test/install-third-party-unit-test-frameworks?view=vs-2019 单元测试是什么? 使用 Visual Studio 定义和运行单元测试,使代码保持正
阅读全文
posted @ 2021-11-08 15:05
小林野夫
阅读(215)
推荐(0)
摘要:
接口设计方式 自顶向下 (如图所示),自底向上(发现类需要结构了就声明一个接口)。 接口的作用 用来解耦、继承 接口的本质
阅读全文
posted @ 2021-11-08 14:29
小林野夫
阅读(99)
推荐(0)
摘要:
1.什么叫做“自顶向下,逐步求精”?目前软件开发方法使用最广泛的,当属结构化的方法和面向对象的方法。而其中,结构化程序设计支持“自顶向下, 逐步求精”的程序设计方法。“自顶向下”的具体内涵是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。而“逐步求精”
阅读全文
posted @ 2021-11-08 13:01
小林野夫
阅读(2718)
推荐(0)
摘要:
使用 .NET Core 3.0 的 AssemblyLoadContext 实现插件热加载 一般情况下,一个 .NET 程序集加载到程序中以后,它的类型信息以及原生代码等数据会一直保留在内存中,.NET 运行时无法回收它们,如果我们要实现插件热加载 (例如 Razor 或 Aspx 模版的热更新)
阅读全文
posted @ 2021-11-06 16:40
小林野夫
阅读(3098)
推荐(1)
摘要:
游戏情景设定: 有一个游戏机,里面出现几种动物让儿童选择。选择完动物后,在输入数值让动物叫几次。 动物类型以插件的形势存在,可以外包给其他人开发,并提供了开发接口AnimalTool.SDK.dll。 开发的好的插件导入文件夹ZoomGame程序的plugins文件就可以了。 主程序:ZoomGam
阅读全文
posted @ 2021-11-06 14:06
小林野夫
阅读(100)
推荐(0)
摘要:
Microsoft 生成引擎(MSBuild)项目文件位于生成和部署过程的核心。 本主题以 MSBuild 和项目文件的概念性概述开头。 它介绍了在处理项目文件时将遇到的关键组件,并通过一个示例来演示如何使用项目文件来部署真实的应用程序。 学习内容: MSBuild 如何使用 MSBuild 项目文
阅读全文
posted @ 2021-11-05 19:57
小林野夫
阅读(412)
推荐(0)
摘要:
为什么我们在继承IEnumerable< T >接口的时候也要实现IEnumerable接口。 新的代码里面都用IEnumerable< T >,因为泛型的类型是安全的。我们可以以类型安全的方式进行迭代,并在周围传播该信息。如果我将IEnumerable返回给您,则您可以放心地假定从它返回的所有内容
阅读全文
posted @ 2021-11-04 19:01
小林野夫
阅读(195)
推荐(0)
摘要:
转载自:https://www.cnblogs.com/yplong/p/5286906.html 平时工作中我们经常用foreach来迭代一个集合。比如 1 foreach (Student student in myClass) 2 { 3 Console.WriteLine(student);
阅读全文
posted @ 2021-11-04 15:19
小林野夫
阅读(77)
推荐(0)
摘要:
我常说C#的入门技术是委托、事件、消息。只有当你可以纯熟运用这三个技能的时候,才刚刚入门,此时C#的大门才算正式为你打开。很多人在学了一些语法编写一些项目后就觉得C#精通了,其实你们还没入门呢(对日开发的居多) 下面上一个图片,大家来看看自己的定位,当然是纯技术角度,其实,有些时候一个软件架构,用初
阅读全文
posted @ 2021-11-04 02:11
小林野夫
阅读(1128)
推荐(0)
摘要:
转载自:https://www.cnblogs.com/dytes/archive/2012/06/29/2569488.html .NET中除了构造函数外,还有多种方式可以创建类型的实例。下面总结了几种常见的通过反射创建类型实例的方法。 假设我们需要创建有这样一个类型的实例: public cla
阅读全文
posted @ 2021-11-03 12:36
小林野夫
阅读(2538)
推荐(2)
摘要:
最重要的是nameof不会影响性能! nameof有什么用?主要用解决 类成员名做参数替代成员们的字符串做参数,如下: using System; namespace csharp6 { internal class Program { private static void Main(string
阅读全文
posted @ 2021-11-02 22:10
小林野夫
阅读(15100)
推荐(2)
摘要:
在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果当前程序指针指向一个函数) F10 步过函数(如果当前程序指针指向一个函数) Shift+F11 步
阅读全文
posted @ 2021-11-02 14:40
小林野夫
阅读(2658)
推荐(1)
摘要:
Assembly属性的应用 //获取当前执行代码的程序集 Assembly assem = Assembly.GetExecutingAssembly(); Console.WriteLine($"程序集全名:{assem.FullName}" ); Console.WriteLine($"程序集的
阅读全文
posted @ 2021-11-01 18:40
小林野夫
阅读(2238)
推荐(0)
摘要:
BindingFlags 枚举用途:Type的类方法中,用于筛选成员。 type.InvokeMember方法中 type.GetConstructor 方法中 type.GetFiles方法中 type.GetMethod方法中 type.GetNestedType方法中 type.GetMemb
阅读全文
posted @ 2021-11-01 17:03
小林野夫
阅读(925)
推荐(0)
摘要:
创建类的实例: //需要添加对Education.dll的引用才能正确执行 object CreateInstanceKind1 = Activator.CreateInstance("Education", "People.Person"); //不需要添加引用,因为已经传入路径参数,它默认在当前
阅读全文
posted @ 2021-11-01 16:25
小林野夫
阅读(1366)
推荐(0)
摘要:
Type属性的应用 Type type = typeof(MyClass); Console.Write("$类型名:{ type.Name}"); Console.Write("$类全名:{type.FullName}" ); Console.Write("$命名空间名:{ype.Namespac
阅读全文
posted @ 2021-11-01 14:35
小林野夫
阅读(1494)
推荐(0)
摘要:
原文:https://docs.microsoft.com/zh-cn/dotnet/core/dependency-loading/understanding-assemblyloadcontext AssemblyLoadContext 类是在 .NET Core 中引入的,在 .NET Fra
阅读全文
posted @ 2021-11-01 01:04
小林野夫
阅读(442)
推荐(0)
摘要:
添加全局程序集缓存 Global Assembly Cache Tool (Gacutil.exe) 操作环境windows10+vs2019 cmd.exe位置在 C:\Windows\System32目录下, 第一步、以管理员的身份运行cmd.exe,然后输入以下命令进入gacutil.exe所
阅读全文
posted @ 2021-10-31 18:06
小林野夫
阅读(595)
推荐(1)
摘要:
原文地址:https://blog.alswl.com/2011/01/gac/ GAC GAC是什么?是用来干嘛的?GAC的全称叫做全局程序集缓存,通俗的理解就是存放各种.net平台下面需要使用的dll的地方。GAC的具体目录在windows/ assembly。 喜欢使用破解软件的朋友可能会经常
阅读全文
posted @ 2021-10-31 14:46
小林野夫
阅读(1639)
推荐(0)
摘要:
NET core 添加了新的nuget包,部署出现Could not load file or assembly 这个坑,今天整了一天,我添加了Microsoft.AspNetCore.Mvc.Versioning包,结果发布到服务器,我复制了dll过去出现了一直找不到加载不成功的问题 Startu
阅读全文
posted @ 2021-10-31 12:16
小林野夫
阅读(1683)
推荐(0)
摘要:
.net 程序集的组成: 程序集由元数据、清单、il 、资源 .net程序集名称 强名称程序集有一个完全限定的名称,由程序集的名称、区域性、公钥、版本号以及(可选)处理器体系结构组成。 使用 FullName 属性来获取已加载程序集的完全限定名称,该名称通常称为显示名称。 运行时使用此名称信息来定位
阅读全文
posted @ 2021-10-30 16:41
小林野夫
阅读(382)
推荐(0)
摘要:
打开记事本,输入下面代码,然后把文件后缀改为.snippet 。然后通过vs2019 工具》代码段管理导入。 <?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/Visual
阅读全文
posted @ 2021-10-29 20:05
小林野夫
阅读(172)
推荐(0)
摘要:
微软官方教程:https://docs.microsoft.com/zh-cn/dotnet/framework/reflection-and-codedom/viewing-type-information 元編程(英語:Metaprogramming),又譯超編程,是指某类计算机程序的编写,这类
阅读全文
posted @ 2021-10-29 16:26
小林野夫
阅读(428)
推荐(0)
摘要:
特性应用 取得枚举类型的注释 平时开发时,经常会用到枚举类型及其相关判断,而有时我们想显示枚举类型的注释,怎么办?下面用特性来解决这个问题。 namespace AttributeDemo.CustomAttributes { public class RemarkAttribute : Attri
阅读全文
posted @ 2021-10-29 13:15
小林野夫
阅读(445)
推荐(0)
摘要:
msdn:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/creating-custom-attributes 目录: Attribute与Property 的翻译区别Attri
阅读全文
posted @ 2021-10-28 18:06
小林野夫
阅读(1042)
推荐(0)
摘要:
相同点 两者都有:manifest、metadata、IL 不同点 1、assembly 有main程序函数。module只能附属于程序集,程序集可以拥有多个。 2、metadata的差异 程序集特有的部分:无论是DLl或EXE都有自生程序集描述的部分,而模块没有。这个包含程序集版本 公钥 等信息。
阅读全文
posted @ 2021-10-26 23:44
小林野夫
阅读(642)
推荐(0)
摘要:
如何用CSC.exe来编译Visual C#的代码文件 Visual C#是微软公司推出的新一代程序开发语言,Visual C#是微软公司.Net FrameWork框架中的一个重要的组成部分,也是微软公司向程序员极力推荐一个新的程序开发平台。和以往的开发语言相比较,他有更强大功能,更高的稳定性和更
阅读全文
posted @ 2021-10-26 23:19
小林野夫
阅读(610)
推荐(0)
摘要:
.NET Core 程序集(模块)还包含描述程序集本身的元数据,我们称之为清单。清单记录了当前程序集正常运行所需的所有外部程序集、程序集的版本号、版权信息、模块 、资源(图片 xml等)等。与类型元数据一样,生成程序集清单也是由编译器的工作。 同样地,还是以上面 Calculator 类所在项目为例
阅读全文
posted @ 2021-10-26 22:09
小林野夫
阅读(394)
推荐(1)
摘要:
本文是为了学习程序集而整理的网上资料,主要包括两个部分,概念和使用,前部分讲怎样理解程序集,后部分讲述怎样使用的细节。 程序集与托管模块的概念 "程序集与托管代码块"(摘自Himage的blog),希望大家看了此篇文章后对程序集的概念清楚一点 如果你正在开发面向DotNet平台的应用程序,那么你肯定
阅读全文
posted @ 2021-10-26 22:06
小林野夫
阅读(622)
推荐(0)
摘要:
元数据是指“描述资料的资料”。它被用来概述资料的基础信息,以简化查找过程与方便使用[6]。 创建资料的方法 资料的用途 创建的时间与日期 资料的创建者或作者 资料被创建在电脑网络的何处 用作标准 文件大小 例如 图像:一个数字图像文件可能会包括描述图片大小、色彩深度、图片分辨率、图片创建时间、快门速
阅读全文
posted @ 2021-10-26 15:21
小林野夫
阅读(736)
推荐(0)
摘要:
因为 .NET Core 的控制台应用默认是生成 dll 文件,而没有对应的 exe 文件。如下图所示,是在VS中编译后生成的结果 图中看到的TestVisualizer.exe 只是一个快捷方式, 用ilspy是无法加载这个exe文件,就可以证明它不是程序集了 要执行TestVisualizer.
阅读全文
posted @ 2021-10-26 12:12
小林野夫
阅读(1703)
推荐(2)
摘要:
public static class CodeTimer { public static void Initialize() { Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; Thread.Curren
阅读全文
posted @ 2021-10-25 16:26
小林野夫
阅读(87)
推荐(0)
摘要:
前言 为了让C#、Visual Basic等.NET编程语言能具备动态编程语言的特性,.NET 4.0引入了一个“DLR(Dynamic Language Runtime:动态语言运行时)”(图 3)。 DLR运行于CLR之上,提供了一个动态语言的运行环境,从而允许Python、Ruby等动态语言编
阅读全文
posted @ 2021-10-25 14:24
小林野夫
阅读(763)
推荐(0)
摘要:
编译时 应用:const、运算符重载、函数重载、类型 工作内容:编译时类型检查(赋值检测)、语法分析、词法分析 静态多态:特色多态(重载、运算符重载) call调用虚方法的情况 1、call:可调用 静态方法、实例方法、虚方法。call假定该变量不为null 2、call常用于调用值类型的方法或密封
阅读全文
posted @ 2021-10-25 01:49
小林野夫
阅读(635)
推荐(0)
摘要:
微软近日开源了一个新平台——Try .NET,该平台可以让开发者在线上编写并运行 .NET 代码。微软介绍,Try .NET 是一个可嵌入的代码运行器,不仅可以直接在线上对自己或者他人的代码进行编辑、测试与运行,还可以将代码以片段的形式嵌入到博客或者文档中,以支持在线和离线的交互式文档。 官网链接:
阅读全文
posted @ 2021-10-24 23:29
小林野夫
阅读(120)
推荐(0)
摘要:
一、动态类型其实是动态编译的一种形式。在.net4.0上添加新的动态类型dynamic,对于动态类型,就是在运行时才会确定的类型。 1.dynamic关键字的使用 1)使用var可以定义本地变量,该变量的实际数据类型取决于编译时,是在初次分配时确定的,在初次分配后,将拥有一个强类型的变量,任何不相容
阅读全文
posted @ 2021-10-24 23:11
小林野夫
阅读(658)
推荐(0)
摘要:
恢复内容开始 一、操作符概览 1、概念 操作符(Operator)也称“运算符” 操作数:是用来操作数据的,被操作符操作的数据称为操作数(Operand) 2、C#中的操作符 注: 优先级:从上往下优先级递减 同级情况下: 一般情况下,从左到右 赋值操作符顺序最晚,顺序从右向左 二、操作符的本质 1
阅读全文
posted @ 2021-10-24 19:08
小林野夫
阅读(406)
推荐(0)
摘要:
typeof 运算符也能用于公开的泛型类型。具有不止一个类型参数的类型的规范中必须有适当数量的逗号。不能重载 typeof 运算符。 is 可以检测和父类是否兼容,typeof责不能 public class Animal { } public class Giraffe : Animal { }
阅读全文
posted @ 2021-10-23 23:43
小林野夫
阅读(180)
推荐(0)