我有Class1
,这个类需要将一个类对象列表List<classObject>
发送到Class2
,如果这是List<String>
那么就像我一样容易,例如,直接将其作为参数发送。
由于我有一个在Class1
中定义为classObject
的对象,我似乎无法在Class2
的构造函数中引用它。
我想要确保遵守适当的OO做法,因此不要在类之间实现任何直接依赖。有没有办法将List<classObject>
从Class1
发送到Class2
,可能是通用对象?
编辑:
这里是我尝试过的一个例子,这不起作用,但希望能让你对我尝试的内容有所了解:
的Class1:
public class catData
{
public string catName;
public string modGUID;
public string versionLocal;
public string versionServer;
public bool onServer;
}
void allCats()
{
List<catData> mainCatSet = new List<catData>();
mainCatSet.Add(new catData { name = "abc", tel = "none"});
var catForm = new catalogueSelect(mainCatSet)
}
第2课:
public catalogueSelect(List<Object> cats)
{
InitializeComponent();
//do soemthing with List 'cats'
}
我试过的那个appraoch但它看起来不会起作用,有没有办法实现将List从Class1发送到Class2。 / p>
感谢。
答案 0 :(得分:1)
如果我理解您的要求,则您在引用catData
课程时遇到问题,因为它位于与您catelogueSelect
方法不同的位置。
对此的一个解决方案是在公共位置创建ICatData
接口,并将其用作List
类型作为参数。
这使您可以分离类的定义和实现,并更好地遵循OOP原则。
例如:
在一些常见的位置:
public interface ICatData
{
string catName;
string modGUID;
string versionLocal;
string versionServer;
bool onServer;
}
的Class1:
public class catData : ICatData
{
public string catName;
public string modGUID;
public string versionLocal;
public string versionServer;
public bool onServer;
}
void allCats()
{
List<ICatData> mainCatSet = new List<ICatData>();
mainCatSet.Add(new catData { name = "abc", tel = "none"});
var catForm = new catalogueSelect(mainCatSet)
}
第2课:
public catalogueSelect(List<ICatData> cats)
{
InitializeComponent();
//do soemthing with List 'cats'
}