2016-03-06 28 views
-1

想我已經得到了以下方案:接取存儲的數據在受保護的變量對父類

public class Foo 
    { 
     protected List<String> FooList = new List<string>(); 
     public void OperationsOnFoo() 
     { 
     //Some stuff who's going to add data to FooList 
     } 
    } 

    public class Foo2 : Foo 
    { 
     public void Foo2Methods() 
     { 
     //I can access FooList but i can't get its data 
     } 
    } 
} 

的組成部分......

public partial class Form1 : Form 
    { 

     public Form1() 
     { 
      InitializeComponent(); 

     } 

     //Select Files 

     private void button1_Click(object sender, EventArgs e) 
    { 

var InstanceOfFoo2 = new Foo2(); 
InstanceOfFoo2.Foo2Methods(); 
    } 

我可以aceess從富所有變量和方法;但我無法訪問存儲在它們上面的數據。 有沒有辦法做到這一點(而不是設置公開),還是應該將內容傳遞給公共變量並將其用於子類?

感謝

回答

1

我假設你想保護它們不被設置,而不是閱讀因爲你顯然有需要讀取的值。請嘗試以下操作:

public class Foo 
{ 
    public List<String> FooList { get; private set; } 

    public Foo() 
    { 
     FooList = new List<string>(); 
    } 

    public void OperationsOnFoo() 
    { 
     //Some stuff who's going to add data to FooList 
    } 
} 

public class Foo2 : Foo 
{ 
    public void Foo2Methods() 
    { 
     //Have fun getting the data here! 
    } 
} 

編輯:

這是一個工作程序。它顯示項目的數量,以及列表中的每個項目:

namespace ConsoleSandbox 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var foo = new Foo2(); 
      foo.OperationsOnFoo(); 
      foo.Foo2Methods(); 
      Console.ReadLine(); 
     } 

    } 

    public class Foo 
    { 
     public List<String> FooList { get; private set; } 

     public Foo() 
     { 
      FooList = new List<string>(); 
     } 

     public void OperationsOnFoo() 
     { 
      for (int i = 0; i < 100; i++) 
      { 
       FooList.Add(i.ToString()); 
      } 

     } 
    } 

    public class Foo2 : Foo 
    { 
     public void Foo2Methods() 
     { 
      Console.WriteLine(FooList.Count); 

      foreach (var aString in FooList) 
      { 
       Console.WriteLine(aString); 
      } 
     } 
    } 
} 
+0

我曾嘗試過。同樣的行爲。當我檢查Foo2中的var時,它有0個元素。 –

+1

@PabloCosta我包括一個使用這些類的工作控制檯程序。我可以訪問FooList中的項目數以及所有值。瞭解它與實際實施的不同之處。 –

+0

請檢查我所做的更新。我添加了一個發生了什麼事情的例子。 –