【问题标题】:how do I give access to a few methods in one class from many other classes如何从许多其他类中访问一个类中的一些方法
【发布时间】:2018-02-15 03:53:18
【问题描述】:

我的系统必须读写十几个传感器。

我为每个传感器都有一个单独的类,它封装了单个传感器的状态和所需的所有功能。

我使用状态机模式来控制我的应用程序的整体操作。状态机中的每个状态也是一个单独的类。

许多状态需要访问每个传感器类中的一些方法才能从传感器读取数据或更改传感器的状态。

目前,每个传感器类都是静态的,但这种方法不允许我继承或实例化所有传感器共享的一些基本功能。

作为测试,我已经为一些传感器类尝试了单例模式,但这看起来就像一个静态类,具有某种继承或实例化的能力。当许多其他类需要访问该类中的一些方法时,是否有替代静态类或单例类的方法?

【问题讨论】:

  • 向我们展示您的代码
  • 我正在努力将我的大型应用程序精简为显示我正在做或尝试做的事情,所以我可以在这里发布。

标签: c# oop singleton static-classes


【解决方案1】:

没有任何代码,很难说出你在做什么或你需要什么。当严格按照您的描述进行时,这听起来像是接口的设计目的。但它们并不真正适用于静态类。但是,它们将使用单例类。

interface IMachine
{
   string MachineId { get; set; }

   StateObject State { get; set; }
}

class Machine : IMachine
{
   public State { 
    get { return [Current State]; } 
    set { [Current State] = value; }
   }
}

static class MachineCollection
{
    pricate List<IMachine> _Machines;

    public static List<IMachine> Machines
    {
        get
        {
            if (_Machines == null)
            {
                // Instantiate Machines here
            }
        }
    }
}

使用这种方法,您可以拥有一个在访问属性时实例化它们的静态类,并且您可以将所有机器存储在一个列表/数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多