在类之间传递List <object>

时间:2016-04-04 11:24:15

标签: c#

我有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>

感谢。

1 个答案:

答案 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'
}