2013-05-03 26 views
1

我因爲我希望能夠做到這一點轉換值和T

public object this[string key, bool myVar = true] 
{ 
    get{...} 
    set{...} 
} 

所以從字典繼承這樣

public class ManagedSettings : Dictionary<string, object> 

類用戶可以做

managerSettingVar["hisKey"] = hisValue; 

但是現在我想允許用戶做這樣的事情

managerSettingVar<bool>["hisKey"] 

因此,鍵「hisKey」的值將作爲bool已經被轉換。 這是甚至可能的,因爲我建議?我嘗試過使用T,但還沒有幸運。 類似於

public T this<T>[string key, bool myVar = true] 
+2

你要什麼與 'hisVar' 做。我在你的簽名中看到它,但不會回到代碼中。 – 2013-05-03 11:38:08

+0

最後一行有'T'的用途是什麼? – dasblinkenlight 2013-05-03 11:40:03

+0

myVar hisVar任何..我需要使用它裏面的獲取設置方法 – 2013-05-03 11:41:34

回答

5

不,這是不可能的。索引器不能通用。

您可以創建一個通用的GetValue功能:

public T GetValue<T>(string key) 
{ 
    return Convert.ChangeType(this[key], typeof(T)); 
} 

,或者值只需要鑄造:

public T GetValue<T>(string key) 
{ 
    return (T)this[key]; 
} 
+0

你錯過了方法名稱後的''。 – juharr 2013-05-03 11:52:41

+1

@juharr:謝謝!我匆忙。還沒有咖啡。 :) – 2013-05-03 11:59:03