2009-09-10 97 views
1

可以說我有一個名字空間的GPS,我可以在那裏調用像GPS.devise.coordinates.getLoc這樣的東西,它只會返回我的設計的GPS座標。C#將一個變量分配給一個類調用

我該如何將所有「GPS.devise.coordinates」詳細分配給變量,如「我」?

所以我可以改用Me.getLoc。

在此先感謝

回答

1

假設getLoc()是靜態的,請嘗試使用以下:

using Me = GPS.devise.coordinates; 

這通常用於縮短命名空間所在班有共同的名字。一個很好的例子是VSTO庫,其中大多數命名空間都有一個Application類。

+0

正是我需要的,謝謝。 – 2009-09-12 00:29:35

2

你可以公開一個屬性,它返回,就像這樣:

public Point getLoc { get { return this.device.coordinates.getLoc;}} 
+0

擊敗了我:) – Pondidum 2009-09-10 12:24:29

+0

如果getLoc方法每次調用時都會返回一個新值(因爲我懷疑它可能),那麼這將不是一個特別好的API設計。每次調用屬性時都會返回同一個對象。 – 2009-09-10 12:30:28

+1

除標記評論是預期立即返回的財產。調用GetLoc可能會導致長時間運行的方法。 – PVitt 2009-09-10 12:34:53

0

一下班就「我」呢?

如果 '我' 是說一個Person類

public class Person 
{ 
    public Person(){} 

    private GPS _gps = new GPS(); 
    public Coords getLoc 
    { 
     get{ 
      return _gps.devise.coordinates.getLoc; 
     } 
    } 
} 


Person Me = new Person; 
Coords MyLocation = Me.getLoc; 
0

如果getLoc是一個屬性,你可以簡單地這樣做:

var me = GPS.devise.coordinates.getLoc; 

不過,我懷疑,既然你的要求,getLoc是一種方法。在這種情況下,您可以將方法組分配給委託。在C#3.0,你可以這樣做:

var me =() => GPS.devise.coordinates.getLoc(); 

這將使你得到這樣的座標:

var coordinates = me(); 

me另一種聲明將是這樣的:

Func<Coords> me = GPS.devise.coordinates.getLoc; 

假設getLoc的退貨類型爲Coords

這兩個me的聲明是相同的事情 - 它只是兩種不同的寫作方式。


如果你只是想爲coordinates的簡寫,因爲它有你想要調用那將是非常簡單的方法不止一種。雖然我無法從你的例子coordinates是否是一個字段或屬性來講,它不會因爲在這兩種情況下,不管你只需將對象分配到一個新的變量:

var coords = GPS.devise.coordinates; 

隨後你就可以調用方法在coords變量:

var loc = coords.getLoc(); 
var satTime = coords.getSatTime(); 

這將與C#(甚至1.0)與稍作修改,與其var你需要顯式聲明任何版本的變量的類型。 var是一個C#3.0(Visual Studio 2008)功能。

+0

如果GPS.devise.coordinates有更多方法,該怎麼辦?我想要的東西是: GPS.devise.coordinates Me; 至於GPS.devise.coordinates,如代理: Me.GetLoc Me.GetSatTime Me.etc 代替 GPS.devise.coordinates.getLoc GPS.devise.coordinates.getSatTime GPS .devise.coordinates.etc – 2009-09-10 13:35:49

+0

PS:getLoc是一種方法 – 2009-09-10 13:37:53

+0

我已編輯答案來解決您的其他問題。希望這可以幫助。 – 2009-09-10 13:54:58

相關問題