簡體   English   中英

C#將兩個屬性鏈接在一起?

[英]C# link two properties together?

我正在嘗試檢索學生的模塊列表,並將其添加到另一個類的屬性中以顯示它們。 我的目標是,當我創建一個人的實例並且他們的程序具有特定名稱時,它將檢索該程序的模塊。

這是我的Program類中的方法,在這里我嘗試從Modules類中的ListOfModules方法獲取模塊。

    public List<Modules> ModuleList
    {
        get
        {
            Modules m = new Modules();

            if (m.ListOfModules == null)
            {
                return null;
            }
            else
            {
                return m.ListOfModules;
            }
        }
    }

這是Modules類中的ListOfModules方法。

internal List<Modules> ListOfModules
    {
        get 
        {
            if (_modules == null)
            {
                return _modules;
            }
            else
            {
                return _modules;
            }
        }
    }

這是我如何將模塊添加到模塊列表的示例。

class CGP : Programmes
{
    List<Modules> modules;
    public CGP() :base("CGP") //CGP is the name of the programme
    {
        modules = new List<Modules>();
        modules.Add(new Modules("example 1"));
        modules.Add(new Modules("example 2"));
    }
}

那么,如何才能在Program類中獲取ModuleList方法,以從Modules類中的ListOfModules方法獲取此模塊列表? 我知道這些模塊已添加到ListOfModules方法中,但是我似乎無法弄清楚如何將其與ModuleList鏈接,以便我可以打印出該列表。

我將花費大量的時間來解決這個問題,感謝您的幫助或支持。 對不起,聽起來像個業余愛好者。

問題的根源似乎是基類中的ModuleList。 我也不明白為什么您有2個級別的列表,這些列表似乎是完全相同的實現。

class Programme
{
    private List<Module> _modules = new List<Module>();

    public List<Module> Modules { get { return _moduleList; } }
}

class CGP : Programme
{
    public CGP() :base("CGP")
    {
        Modules.Add(new Module("example 1"));
        Modules.Add(new Module("example 2"));
    }
}

這尤其顯得愚蠢:

internal List<Modules> ListOfModules
{
    get 
    {
        if (_modules == null)
        {
            return _modules;
        }
        else
        {
            return _modules;
        }
    }
}

您將以任何一種方式返回同一件事,因此不需要檢查。 基本上與此相同:

internal List<Modules> ListOfModules { get { return _modules; } }

沒有直接的方式可以按照您描述的方式鏈接這些內容。

我建議使用Person可以調用的臨時服務來按名稱檢索模塊。

看起來您的問題是List模塊在CGP子類中聲明,因此Programs超類中的ModuleList屬性無法訪問它。 如果希望Programs類中的屬性能夠返回要在CGP構造函數中添加的模塊,則需要將它們添加到Programs類的屬性中(可能已聲明為protected),以便僅子類可以訪問它。

還有其他一些看起來很奇怪的事情:為什么您的ModuleList getter創建一個新的Modules對象,然后返回它的屬性? Modules的構造函數會做一些事情來創建ListOfModules屬性基礎的數據還是從某個地方檢索數據?

為什么您的ListOfModules屬性檢查_modules是否為空,然后返回它是否為空? 我將跳過該內容和_modules屬性,然后執行以下操作:

internal List<Modules> ListOfModules { get; private set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM