小编Cor*_*son的帖子

使用C#记录来封装数据以外的对象是否合适?

记录非常适合封装数据,但是服务存储库之类的东西呢?与类定义代码相比,属性定义的位置语法更加简洁,因为构造函数、属性和属性初始化代码都是由编译器为我们生成的。

这是一个人为的例子来演示。目的是RecordService用更少的代码行使依赖关系不可变。在现实场景中,依赖项将由服务容器注入。

namespace RecordsTest;

class MyRepo
{
    public string SomeMethod() => "MyRepo.SomeMethod()";
}

class MyService
{    
    public string SomeMethod() => "MyService.SomeMethod()";
}

record RecordService(MyRepo Repo, MyService Service)
{
    public void SomeMethod() => 
        Console.WriteLine($"RecordService.SomeMethod() {Repo.SomeMethod()} {Service.SomeMethod()}");
}

class Program
{
    static void Main(string[] args)
    {
        var myRepo = new MyRepo();
        var myService = new MyService();

        var recordService = new RecordService(myRepo, myService);
        recordService.SomeMethod();

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# standards record

6
推荐指数
1
解决办法
1329
查看次数

标签 统计

c# ×1

record ×1

standards ×1