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
类的一些变量(非静态)。例如,假设我想使用GetX
和GetY
方法获取posX
和posY
的值,以便将它们写入文件。如何从"文件"实例访问Map中的"数据"实例?我知道我可以将DataHandler类的实例作为参数传递给写文件的函数,但这并不像我想象的那样。在我的想法中,它应该自己读取数据(posX
和posY
在这种情况下),因为它在同一个Map
类中。有什么干净利落的方法吗?
我可以把Map
类的实例传递给FileHandler
构造函数,这样它就有办法访问它的父类,从而访问数据,但我知道这不是解决问题的好方法。所以,改变我的结构是没有问题的,我知道它有问题,否则我不会有这个问题,但是我不知道如何改变它。如果你有什么建议,请写下来。
只是为了更好地解释上下文。我有一个地图,它由各种数据(x, y,高度,宽度,名称等),一些描述它的图像(例如,地形高度的RGB图像,我已经计划了处理图像的类)和一些设置文件组成。在其中一个文件中必须写入一些地图数据。所以,我的想法是有一个父Map类,其中有三个类用于处理数据,图像和文件,但这个问题出现了,所以我认为这不是一个好的结构。
在我的想法中,它应该自己读取数据(posX和posY在这种情况下),因为它在同一个Map类中。有什么干净利落的方法吗?
。您必须在Map
类中的DataHandler
和FileHandler
之间来回传递数据,它们不会自动获得彼此存在的通知。
如果你能解释一下每件事应该做什么,那将会很有帮助,因为你的类名似乎有点太通用了。
如果你强烈反对改变结构(但它是推荐的方式),我建议你重构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.