2013-07-28 22 views
1

我正在創建的類層次結構樹,以便他們組織起來,更容易鍵入對象路徑時在智能感知閱讀。例如,像「System.IO.FileStream()」一樣。是否有菊花鏈有道類,並呼籲它的正確方法?

我注意到,當我用VAR,但是當我使用完整的類命名它不工作,它的工作原理。另外我注意到,當我使用List <>對象時它不起作用。任何人都可以向我解釋爲什麼和我做錯了什麼。謝謝...

public class Vehicle 
{ 
    public string Year { get; set; } 
    public string Make { get; set; } 
    public string Model { get; set; } 
    public string Trim { get; set; } 
} 
public class Dealer 
{ 
    public Vehicle VehicleData { get { return new Vehicle(); } set; } 
} 

這一個工程......

var vehicle = new Dealer().VehicleData; 
vehicle.Year = "2007"; 
vehicle.Make = "Ford"; 

這一個不工作的...

Dealer().VehicleData vehicle = new Dealer().VehicleData; 
vehicle.Year = "2004"; 
vehicle.Make = "Buick"; 

這一個不工作要麼...

var vehicles = new List<Dealer().VehicleData>(); 
vehicles.Add(
    new Dealer().VehicleData { 
     Year = "2001", 
     Make = "Toyota" 
    } 
); 
vehicles.Add(
    new Dealer().VehicleData { 
     Year = "2003", 
     Make = "Volvo" 
    } 
); 
+1

我想你可能會尋找命名空間,而不是一個類層次結構。另外,請不要只說「這不起作用」 - 總是說出你預期會發生什麼,以及**如何「不起作用」。 – TeaDrivenDev

+0

這是一個非常糟糕的想法,因爲你永遠不能再次調用對象..你每次都會創造一輛新車,更不用說只有一輛車的經銷商並不是一個經銷商 – Sayse

+0

我在工作中的項目變得太大了,所以它需要重新組織起來,亞西爾通過班級層層導航。所以,無論如何,我猜最後兩個不起作用的例子是由於錯誤的編程概念造成的,我正在尋求指導將腳本指向正確的方向。 – fletchsod

回答

7

Dealer().VehicleData不是一個類型,它是一個屬性。

你不能聲明一個變量是type屬性的。

這使得同樣沒有多大意義,因爲這:

public class Person 
{ 
    public string Name { get; set; } 
} 

... 
new Person().Name test; 

需要注意的是這一行:

var vehicle = new Dealer().VehicleData; 

,其實就是一樣行:

Vehicle vehicle = new Dealer().VehicleData; 

而且請注意,在這種情況下,您不僅僅存儲對經銷商的參考到車輛,所以你應該寫上面的代碼是這樣的:

var vehicle = new Vehicle(); 

你實際上是尋找的namespaces概念?

此:

System.IO.FileStream() 

實際上已經使用這樣的:

new System.IO.FileStream() 

和部分如下:

+----------------------+---- calling the constructor of FileStream 
|      | 
v+v      vv 
new System.IO.FileStream() 
    ^---+---^ ^----+---^ 
     |   | 
     |   +-- the name of the class 
     | 
     +-- the namespace of the FileStream class 

要聲明它:

namespace System.IO 
{ 
    public class FileStream 
    { 
     public FileStream() 
     { 
     } 
    } 
} 

(注意:FileStream卻沒有參數的構造函數所以上面其實錯了,但你的要點)

+0

命名空間是我試圖用於類層次結構的一個比喻。命名空間的問題是我無法將參數變量傳遞到層次結構樹分支中的每個類中。好吧,我看到你在說我正在使用財產,這是爲什麼它不起作用。那麼我的其他選擇是什麼? – fletchsod

+0

命名空間。不幸的是,你沒有描述你想要做什麼以及爲什麼,所以我不能告訴你任何更具體的事情。 –

+0

內部類是一種稱爲它的方式,我不知道它是用什麼與菊花鏈類一起使用的。好吧。 :-(我猜我必須自己弄清楚,謝謝你的嘗試 – fletchsod