gpt4 book ai didi

c# - 如何在C#中实现条件封装

转载 作者:太空狗 更新时间:2023-10-29 20:48:52 24 4
gpt4 key购买 nike

我想知道如何在类里面有条件地隐藏数据。例如,假设我有一个名为 Car 的类,它具有三个字段:发动机、仪表读数和里程数。

我还有另外三个实体,分别称为:Driver、Mechanic 和 Passenger。 现在我想要的是:

司机应该只能访问里程(而不是引擎和仪表读数)

机械师应该只能访问引擎和里程(而不是仪表读数)

乘客应该只能访问 MeterReading(而不是 Engine 和 Mileage)

实现这个的最佳方法是什么..(不将整个逻辑基于 if else 语句)?

有什么想法吗?

谢谢。

最佳答案

想到的第一个想法是让您的 Car类实现 3 个不同的接口(interface),每个类可以使用这些接口(interface)与您的 Car 交互类。

例如,(我的名字肯定可以改进,但你应该明白),IDriverAccess界面可能如下:

public interface IDriverAccess
{
double Mileage { get; }
}

IMechanicAccess界面可能如下:

public interface IMechanicAccess
{
EngineObject Engine { get; set; }

double Mileage { get; }
}

等等。然后您的汽车类可以实现这些接口(interface),但司机、机械师和乘客的类将只使用这些接口(interface)与对象交互。

public Car : IDriverAccess, IMechanicAccess, IPassengerAccess
{
// implement the interfaces
}

关于c# - 如何在C#中实现条件封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3932821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com