2013-04-02 6 views
1

Могу ли я создать метод, чтобы он возвращал значение типа, указанного в параметрах? Например:Тип возвращаемого значения типа типа в параметре

int i = Settings.Get("count", typeof(int)); 
string s = Settings.Get("count", typeof(string)); 
Guid g = Settings.Get("count", typeof(Guid)); 
+0

как насчет возвращения объекта вместо этого? –

ответ

4
public T Get<T> (string value) 
{ 
    //read setting and cast 


    //or if you have Setting.Get implementation 
    return (T)Settings.Get("count", typeof(T)); 
} 

теперь вы можете

int i = Get<int>("count"); 
string i = Get<string>("count"); 
Guid i = Get<Guid>("count"); 
+0

В чем преимущество написания 'Get (« count »)' везде, а не, скажем, 'GetInt (" count ")'? – dtb

+0

@dtb как еще вы можете получить specufy возвращающийся тип? –

+1

'GetInt' возвращает' int', 'GetString' возвращает' string' и т. Д.? – dtb

2

Вы можете сделать это, сделав метод родовое:

Settings.Get<T>(string name); 

Внутри Получ вам нужно загрузить и затем лить его на T:

public T Get<T>(string value) 
{ 
    object o = 1; // read setting; 
    return (T)o; 
} 

А потом называют это:

int i = Get<int>("count"); 
2

почему бы вам не попробовать дженерики, как этот

public T Get<T>(string value) 
    { 
    // do your stuff and cast the value 
    } 

где Т типа

Смежные вопросы