如何在C#语言中拟定架构规则
2023-03-16 12:16:02
那时候在Models系统设计配置文件中所成立一个名为BaseModel的类并放入此表文档:
脱氧核糖核酸
public abstract class BaseModel
{
public int Id { get; set; }
}
再行成立两个名为Product和Customer的基本概念类。这两个类中所的每一个都必要扩展到BaseModel类,如下所示:
脱氧核糖核酸
public class Product: BaseModel
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class Customer: BaseModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
5.在.NET 6中所成立客户服务类在同一个这两项中所成立另一个系统设计配置文件,并将其名字为Services。在此系统设计配置文件中所成立一个名为IBaseService的硬件,并为其发放此表文档:
脱氧核糖核酸
public interface IBaseService
{
public void Initialize();
}
Initialize工具能够由借助此硬件的所有类借助。Product Service和Customer Service类借助了IBaseService硬件,如比如说的文档片段所示:
脱氧核糖核酸
//ProductService.cs
using Core.Infrastructure.Models;
namespace Core.Infrastructure.Services
{
public sealed class ProductService: IBaseService
{
public void Initialize()
{
//Write your implementation here
}
public List GetProducts()
{
return new List();
}
}
}
脱氧核糖核酸
//CustomerService.cs
using Core.Infrastructure.Models;
namespace Core.Infrastructure.Services
{
public sealed class CustomerService: IBaseService
{
public void Initialize()
{
//Write your implementation here
}
public List GetCustomers()
{
return new List();
}
}
}
只能注意到的是,出于这个简单借助的借以,ProductService类和CustomerService类的Initialize工具都原有为空。研发者可以为这些编著自己的借助。
6.装有NetArchTest.RulesNuGet包被那时候将NetArchTest.RulesNuGet包被填充到这两项中所。为此,只能在系统设计资源Wayland终端中所为了让这两项,然后右键选项并为了让“管理NuGet包被”。在NuGet包被Wayland终端中所,查看NetArchTest.Rules包被并装有它。
或者,可以通过NuGet包被Wayland控制台输出比如说看出的行来装有包被。
PM> Install-Package NetArchTest.Rules
7.在.NET6中所编著框架Smalltalk最后,必要编著框架Smalltalk来定期检查被测源文档否合理标准。只能注意到,此处的“标准”一词是相对来说的,可以假设这些标准将由您定义。
此表测试工具有效性客户服务类的中文名称否带有客户服务后缀。
脱氧核糖核酸
public void ServiceClassesShouldHaveNameEndingWithService()
{
var result = Types.InCurrentDomain()
.That().ResideInNamespace(("Core.Infrastructure.Services"))
.And().AreClasses()
.Should().HaveNameEndingWith("Service")
.GetResult();
Assert.True(result.IsSuccessful);
}
可以用到另一条准则来有效性所有客户服务类否都借助了IBaseService硬件。此表测试工具说明了如何借助这一点。
脱氧核糖核酸
public void ServiceClassesShouldImplementIBaseServiceInterface()
{
var result = Types.InCurrentDomain()
.That().ResideInNamespace(("Core.Infrastructure.Services"))
.And().AreClasses()
.Should().ImplementInterface(typeof(IBaseService))
.GetResult();
Assert.True(result.IsSuccessful);
}
还可以有一个准则来有效性客户服务类是公共的而不是装入的。如果这些类是装入的,将无法实质性扩展到它们。
脱氧核糖核酸
public void ServiceClassesShouldBePublicAndNotSealed ()
{
var result = Types.InCurrentDomain()
.That().ResideInNamespace(("Core.Infrastructure.Services"))
.Should().BePublic().And().NotBeSealed()
.GetResult();
Assert.True(result.IsSuccessful);
}
当试运行这些测试工具时,必要就会找到它们都通过了测试,也就是取得了成功。在此之后修改文档并重新试运行测试,以定期检查否合理探讨的准则。
正在试运行NetArchTestSmalltalk只能记住的是,在较修改版的C#语言学中所,可以在硬件中所拥有成员的选项借助。因此,如果有一个硬件由一个或多个类借助,可以在硬件中所编著选项借助。如果编著的文档在硬件的所有借助中所都是标准化的,就是正确的。
原意链接:
。北京看白癜风到哪家好重庆妇科医院专家预约挂号
艾拉莫德片治类风湿吗
郑州看妇科哪家专科医院好
手指骨关节炎用什么药
- 二手房最佳房龄你告诉他吗?
- 开年四连阴,半导体设备ETF(561980)获资金逆向净申购!机构数据分析半导体库存接近底部,2024年有望迎接黎明
- 英雄跑去|为烈士画像:穿越时空的“相见”
- 城市改造即将开启新篇章!老旧居民小区迎来全面改革!
- 红利策略逆市“走红”,2024年高股息资产配置价值如何?最新机构说明来了
- 贾冰正式拜师赵本山,成为同村班104名弟子中的一员
- 买房时“一次性付给”和“还贷20年”,区别有多大?幸亏知道得早
- 中邮股票将成中邮基金二股东
- 陈慧娴、杨坤、萧敬腾……在记忆的旋律中开启时光穿越环游!
- 要警惕供不应求可能会导致新一轮房价攀升,甚至局部暴涨
- 荣盛石化:1月3日进行路演,包括知名该机构淡水泉,银叶投资的多家该机构参与
- 大陆第一美人,27年后依然吊打内娱
- 投资政策或迎来重磅调控,多家房企股价应声大涨
- 银叶注资调研华勤技术
- 范丞丞工作室曝私生画面 发信再有此类行为将报警
- 公积金代缴能否应用于购房?
- 品牌工程指数 多只成分股逆市攀升
- 何超莲晒“领检定”获网友祝福!再度撞样钟欣潼?
- 房龄超过二十年就不要买了,这4个问题避无可避,聪明人已久脱手
- 路博迈基金李涛:医药行业结构性同业值得期待