.net 对象初始值设定项后的操作

2eafrhcq  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(161)

我想在对象创建期间执行一些操作,但所有属性初始化之后。我不能使用构造函数,因为它在对象初始化器之前执行

var product = new Product
{
    Name = "Test",
    Price = 10,
    ...
} // Automatic product.PostInitializer() method call

public class Product
{
    public required string Name { get; init; }
    public required decimal Price { get; init; }
    ...

    private void PostInitializer() { ... }
}

当然,我可以手动调用PostInitializer()方法,但我希望确保客户端代码在创建后每次都会调用此方法。

bkhjykvo

bkhjykvo1#

我们已经有了一个类似的工具,它叫做...建筑师。

var product = new Product("Test", 10);

public class Product
{
    public required string Name { get; }
    public required decimal Price { get; }
    
    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
        PostInitializer();
    }

    private void PostInitializer() { ... }
}

现在没有办法在不执行PostInitializer的情况下构造Product示例。这就是构造函数的作用,你永远不应该允许一个部分初始化的对象存在。

相关问题