C#-访问另一个类方法
我有这样的想法:C#-访问另一个类方法,c#,class,methods,C#,Class,Methods,我有这样的想法: 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 (g
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
的值,以便将它们写入文件中。如何从“文件”实例访问映射中的“数据”实例?
我知道我可以作为参数传递给写文件的函数,DataHandler类的实例,但这和我想象的不一样。在我看来,它应该自己读取数据(posX
和posY
),因为它在同一个Map
类中。有没有干净的方法可以做到这一点
编辑:
我可以将Map
类的实例传递给FileHandler
构造函数,这样它就可以访问其父类,从而访问数据,但我知道这不是解决问题的好方法。
所以,改变我的结构没有问题,我知道这里面有问题,否则我不会有这个问题,但我不知道如何改变它。如果你有任何建议,尽管写吧
只是为了更好地解释上下文。我有一张地图,它由各种数据(x,y,高度,宽度,名称,…)组成,一些描述它的图像(例如,地形高度的RGB图像,我已经计划了类来处理图像)和一些设置文件。其中一个文件中必须写入一些地图数据。
所以,我的想法是有一个父Map类,其中有三个类用于处理数据、图像和文件,但出现了这个问题,所以我认为它不是一个好的结构
在我看来,它应该自己读取数据(本例中为posX和posY),因为它位于同一个Map类中。有没有干净的方法可以做到这一点
不可以。您必须在Map
类中的DataHandler
和FileHandler
之间来回传递数据,它们不会自动获得彼此存在的通知
如果你能解释一下每件事都应该做些什么,这将非常有帮助,因为你的类名似乎有点过于泛化。如果你强烈反对改变结构(但这是推荐的方法),我建议你重构DataHandler和FileHandler-将其实现为单例,因此,在代码的任何一行中,您都可以通过
DataHandler.Instance.GetX()
和FileHandler.Instance.SomeMethod()
访问它
singleton的基本实现是:
class DataHandler
{
private DataHandler() {}
public GetX() { ... }
private static DataHandler instance = null;
public static Instance
{
get
{
if (instance == null)
{
return (instance = new DataHandler());
}
}
}
}
UPD:我的示例不是线程安全的。如果我理解正确,您的结构应该稍微改变一下。FileHandler类应该有一个接受Map(或DataHandler)实例并写入数据的方法。更不用说示例中的设计失败了……这在技术上是不可能的。您预计fileHandler将如何访问他的地图?从技术上讲,可能有很多对象持有对fileHandler的引用,因此没有“父”对象这样的概念(只有父类才有意义)。