如何在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#语言学中所,可以在硬件中所拥有成员的选项借助。因此,如果有一个硬件由一个或多个类借助,可以在硬件中所编著选项借助。如果编著的文档在硬件的所有借助中所都是标准化的,就是正确的。
原意链接:
。北京看白癜风到哪家好重庆妇科医院专家预约挂号
艾拉莫德片治类风湿吗
郑州看妇科哪家专科医院好
手指骨关节炎用什么药
- 未来30天内,幸运大涨,吉星近身,坐拥千万身家的4大生肖
- 将会20天,桃花逆袭,旧爱变真爱,从此不离不弃的4大星座
- 小狗主动求收养,男子越养越“不对劲”,兽医:不是都可狗
- 猫咪这些“捣乱行为”,其实是爱你的表现,很多人还不知道
- 萨摩耶泪痕怎么换成?
- 阿拉斯加咬人,主人赔偿10几万,但遇到杜宾犬后,它怂了…
- 铲屎的给坐月子的猫妈做了个窝,还一定会就被表脸的给占了
- 被打断腿的流浪土狗,等待它的下场令人吃惊,除非有奇迹
- 被弃养的狗狗身上发现纸条,因祸得福已是了警犬
- 被射击17次,耳朵被割掉眼睛被戳瞎,它选择成为治疗猫治愈伤痛
- 波斯猫之后之后臭怎么解决?
- 柴犬跟男主人龇牙咧嘴,对邻居却乖巧呆萌,这狗非常偏心了
- 小动物帮主人照顾小孩,跟保姆一样,小动物:我太难了
- 本来在看电视的二哈,好奇的闻了闻王家的脚,接着……好刺激!
- 本以为二哈都是又蠢又呆萌,没想到还有一只诱精的在这儿!
- 暗黑系猫咪,猫咪的沙雕蓄意,你家的猫咪中了几条呢
- 访查数十家狗舍,不敢相信自己的眼睛,不为人知的一面你知道吗
- 如何在狗狗面前竖立威严
- 别四脚朝天!常见误解抱狗姿势有2种,如何观察狗是否乐意被抱?
- 被迫说,狗子的魅力确实无人能挡