Ich muss eine generische Methode erstellen, die einen beliebigen Typ zurückgibt.Einstellung Standardtyp auf generische Aufrufermethode C#
wie mein Code
//my callee method
public T getVal<T>(string key)
{
string result = ConfigurationManager.AppSettings[key].ToString();
return string.IsNullOrEmpty(result) ? (T)(object)result : default(T);
}
// and my caller's
getval<string>("somekey");
getval<int>("somekey1");
getval<bool>("somekey2")
der obigen Aufruf Arbeiten fein .. Aber Meine Forderung folgt, ist I gesetzt Standardtyp benötigen (zB: string) an den Angerufenen-Methode.
eg: getval("somekey"); // callee should consider T as string by default and returns string type.
getval<int>("somekey2") //this is a normal call to the same callee which returns int type
Diese Methode fein funktioniert nicht: Sie 'NullReferenceException' oder' InvalidCastException' erhalten, wenn 'T' nicht' string' ist und 'Ergebnis 'ist null oder eine leere Zeichenfolge. Sie können nicht einfach eine Zeichenkette an "T" übertragen, Sie müssen sie konvertieren (parsen). Sie werden wahrscheinlich auch diese Null-oder-Leer-Prüfung invertieren wollen und überlegen, ob Generika in diesem Fall wirklich nützlich sind. –