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

C#中如何为Calculator类的不同实例限制可访问的成员方法

C# 实现Calculator实例方法访问限制的方案

核心逻辑

通过接口隔离原则拆分不同权限的访问范围,不需要修改原有方法的内部实现,仅通过类型约束即可实现不同实例的方法访问限制。

方案1:接口隔离(最优实现)

1. 定义分层权限接口

// 仅包含2参数相加权限
public interface IAddition2Params
{
    int Addition(int a, int b);
}

// 包含2、3参数相加权限,继承上一级接口
public interface IAddition3Params : IAddition2Params
{
    int Addition2(int a, int b, int c);
}

// 包含所有参数相加权限,继承上一级接口
public interface IAddition4Params : IAddition3Params
{
    int Addition3(int a, int b, int c, int d);
}

2. 让原有Calculator类实现上述接口

原有方法不需要做任何逻辑修改,仅需要补充接口继承声明:

public class Calculator : IAddition2Params, IAddition3Params, IAddition4Params
{
    public int Addition(int a, int b)
    { /* 原有逻辑 */ return a + b; }
    public int Addition2(int a, int b, int c)
    { /* 原有逻辑 */ return a + b + c; }
    public int Addition3(int a, int b,int c, int d)
    { /* 原有逻辑 */ return a + b + c + d; }
}

3. 按权限声明实例

在Main方法中用对应权限的接口类型接收实例,即可自动限制可访问的方法:

// 仅可访问2参数Addition方法
IAddition2Params obj1 = new Calculator();
obj1.Addition(1, 2); // 正常调用
// obj1.Addition2(1,2,3); 编译报错,无访问权限

// 可访问2参数、3参数相加方法
IAddition3Params obj2 = new Calculator();
obj2.Addition(1, 2); // 正常调用
obj2.Addition2(1, 2, 3); // 正常调用
// obj2.Addition3(1,2,3,4); 编译报错,无访问权限

// 可访问所有相加方法
IAddition4Params obj3 = new Calculator();
obj3.Addition(1, 2);
obj3.Addition2(1, 2, 3);
obj3.Addition3(1, 2, 3, 4); // 所有方法均可正常调用

方案2:包装类封装(无需修改原Calculator类)

如果无法修改原有Calculator的代码,可以通过包装类封装权限,不需要改动原有类:

// 仅开放2参数相加的包装类
public class LimitedCalc1
{
    private readonly Calculator _calc = new Calculator();
    public int Addition(int a, int b) => _calc.Addition(a, b);
}

// 开放2、3参数相加的包装类
public class LimitedCalc2
{
    private readonly Calculator _calc = new Calculator();
    public int Addition(int a, int b) => _calc.Addition(a, b);
    public int Addition2(int a, int b, int c) => _calc.Addition2(a, b, c);
}

实例化时直接创建对应包装类的对象即可:

var obj1 = new LimitedCalc1();
var obj2 = new LimitedCalc2();

内容的提问来源于stack exchange,提问作者Shalini Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:45:05