c# -访问其他类方法

本文关键字:类方法 其他 访问 | 更新日期: 2023-09-27 18:14:45

我有这样的东西:

public class Map
{
    class DataHandler
    {
        private int posX, posY;
        // Other attributes
        public int GetX() { return posX; }
        public int GetY() { return posY; }
        // Other functions for handling data (get/set)
    }
    class FileHandler
    {
        // Functions for reading/writing setting files
    }
    DataHandler Data;
    FileHandler Files;
    public Map()
    {
        Data = new DataHandler();
        Files = new FileHandler();
    }
}

现在,当我写一个设置文件时,我需要读取DataHandler类的一些变量(非静态)。例如,假设我想使用GetXGetY方法获取posXposY的值,以便将它们写入文件。如何从"文件"实例访问Map中的"数据"实例?我知道我可以将DataHandler类的实例作为参数传递给写文件的函数,但这并不像我想象的那样。在我的想法中,它应该自己读取数据(posXposY在这种情况下),因为它在同一个Map类中。有什么干净利落的方法吗?

编辑:

我可以把Map类的实例传递给FileHandler构造函数,这样它就有办法访问它的父类,从而访问数据,但我知道这不是解决问题的好方法。所以,改变我的结构是没有问题的,我知道它有问题,否则我不会有这个问题,但是我不知道如何改变它。如果你有什么建议,请写下来。

只是为了更好地解释上下文。我有一个地图,它由各种数据(x, y,高度,宽度,名称等),一些描述它的图像(例如,地形高度的RGB图像,我已经计划了处理图像的类)和一些设置文件组成。在其中一个文件中必须写入一些地图数据。所以,我的想法是有一个父Map类,其中有三个类用于处理数据,图像和文件,但这个问题出现了,所以我认为这不是一个好的结构。

c# -访问其他类方法

在我的想法中,它应该自己读取数据(posX和posY在这种情况下),因为它在同一个Map类中。有什么干净利落的方法吗?

。您必须在Map类中的DataHandlerFileHandler之间来回传递数据,它们不会自动获得彼此存在的通知。

如果你能解释一下每件事应该做什么,那将会很有帮助,因为你的类名似乎有点太通用了。

如果你强烈反对改变结构(但它是推荐的方式),我建议你重构DataHandler和FileHandler -将其实现为Singleton,因此在任何一行代码中,你都可以通过DataHandler.Instance.GetX()FileHandler.Instance.SomeMethod()访问它。

单例的基本实现是:

class DataHandler
{
    private DataHandler() {}
    public GetX() { ... }
    private static DataHandler instance = null;
    public static Instance
    {
        get
        {
            if (instance == null)
            {
                return (instance = new DataHandler());
            }
        }
    }
}

UPD: My sample is not thread safe.