You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为C#主构造函数指定访问修饰符?

使用C#主构造函数实现带工厂方法的判别类

可以实现,核心是给主构造函数单独指定私有访问修饰符,类本身保持公开即可。

在C# 12及以上版本中,主构造函数支持单独设置访问修饰符,只需要在主构造函数的参数列表前添加private关键字,就能限制外部直接实例化,同时保留类的公开性,让静态工厂方法可以内部调用构造函数。

完整实现代码如下:

public class SomeResult<TResult> private(TResult? result, Dictionary<string, string>? errors)
{
    public TResult? Result => result;
    public Dictionary<string, string>? Errors => errors;

    public static SomeResult<TResult> GetSuccess(TResult result) 
        => new SomeResult<TResult>(result, null);

    public static SomeResult<TResult> GetFailure(Dictionary<string, string> errors) 
        => new SomeResult<TResult>(null, errors);
}

关键说明

  • 主构造函数前的private修饰符将构造函数设为私有,外部代码无法直接通过new SomeResult(...)创建实例
  • 类的静态工厂方法GetSuccess和GetFailure属于类内部成员,有权限调用私有主构造函数
  • 这样就严格强制了你设定的规则:成功实例只有Result非空、Errors为空;失败实例只有Result为空、Errors非空,外部无法构造不符合规则的对象

内容的提问来源于stack exchange,提问作者Mayur Ekbote

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:52:16