2013-10-11 114 views
0

我希望能夠創建一個可以調用其類型但沒有任何約束的構造函數。繼承未定義類型的問題

public class Box 
{ 
    public class Command 
    { 
     public string name; 
     public string num; 

     public Object PARAMS { get; set; }//<--- HERE 
    } 
} 

我想PARAMS是一個未定義的類型可能會調用這些其他類

public class Person:Box 
{ 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
} 

public class Item:Box 
{ 
    public string ItemName { get; set; } 
    public string Info { get; set; } 
} 

我如何定義PARAMS之一?我正在嘗試繼承,但我不太確定如何調用其他類。

+2

類型作爲'Box'。我錯過了什麼嗎? – Servy

+0

@Servy,可能嵌套類是不必要的,但是有'PARAMS'作爲'Box'可以工作。 – Habib

+0

@Habib,嵌套類是不必要的,但我嘗試了Xml Serializer,並且我有一個基於這種結構的設置格式。 –

回答

1

你有兩個選擇 - 要麼設置它的類型爲Box,或使它通用:

public class Command<T> where T : Box 
{ 
    public string name; 
    public string num; 

    public T PARAMS { get; set; } 
} 

或者:

public class Command 
{ 
    public string name; 
    public string num; 

    public Box PARAMS { get; set; } 
} 
+0

謝謝你的幫助,我不知道我是否可以在試圖訪問'Person'時將其定義爲'Box' –

+0

@albertSilva你可以,但你只能(直接)訪問定義的屬性和方法'Box'。讓他們變得虛擬可以經常解決問題。 –