2014-09-10 122 views
-1

我需要訪問基類類屬性,它是來自已分類類的列表。下面是例子,我需要這個單元測試。從派生類c訪問基類(列表)屬性#

class child : List<Parent> 
{ 
    //this class is empty. 
    } 

class Parent 
{ 
     public List<Seller> Seller 
    { 
     get; 
     set; 
    } 

    public string Id 
    { 
     get; 
     set; 
    } 

}

我不能夠訪問父類的任何屬性。請幫忙。

單元測試代碼

[Test] 
public class test() 
{ 
    child a = new child(); 
    a. // not showing any properties of parent 
} 
+2

孩子從'List '繼承,而不是'Parent'。所以這是一個「集合」。你必須做一些像'foreach(var parent in a){var id = parent.Id;}' – 2014-09-10 10:15:24

+0

我不會在這種情況下得到parent.id – user3660473 2014-09-10 10:19:37

+0

你是什麼意思?如果你不在'List '中添加任何'Parent'(做一些像'a.Add(new Parent {Id = 2})'),當然你不會有任何東西...... – 2014-09-10 10:29:46

回答

0

,如果你想獲得a.IDa.Seller必須聲明:

class child :Parent 
{ 
    //this class is empty. 
} 
0

如果從List<T>派生你將繼承它的能力,而不是從能力T。你可以做的是訪問列表中的一個T來訪問它的屬性。

public class Parent 
{ 
    public bool IAmAParent { get; set; } 
} 

public class Child : List<Parent> 
{ } 

var c = new Child(); 
c[0].IAmAParent = true; 

從我所看到的我有這種感覺,你對你需要的繼承感到困惑。如果您需要訪問ParentChild中的屬性,那麼它應該繼承Parent,然後放入列表中,而不是相反。

public class Parent 
{ 
    public bool IAmAParent { get; set; } 
} 

public class Child : Parent 
{ } 

var c = new List<Child>(); 
c[0].IAmAParent = true; 
+0

已經嘗試過這種方式,但c [0]。 //不顯示任何屬性 – user3660473 2014-09-10 10:23:38

+0

請注意,列表必須包含至少一個項目,以便上面的代碼可以工作。關於intellisense不工作,你可能會遇到一些編譯問題,無法構建基類。代碼中是否存在其他錯誤? – samy 2014-09-10 10:56:03