2017-03-23 3 views
0

Ich brauche Hilfe, die in die richtige Richtung zeigt. Ich möchte eine Methode erstellen, die verschiedene Typen verarbeiten kann. Ich muss diese Typen irgendwie weitergeben und sie irgendwie benutzen. Jede Anleitung dazu wäre großartig. Hier ist das Verfahren, in dem „TypeINeedToPassIn“ ist, ja Sie richtig erraten, die Art muss ich in weitergeben müssen:Art zu Methode?

public static object MatchAccountType(string acctTypeStr) 
{ 
    var acctTypes = SharedUtils.GetEnumValues<TypeINeedToPassIn>(); 

    foreach (TypeINeedToPassIn acctType in acctTypes) 
    { 
     if (acctTypeStr.ToUpper() == acctType.ToString().ToUpper()) 
     { 
      return acctType; 
     } 
    } 

    return null; 
} 

TIA

+3

Bitte werfen Sie einen Blick auf diese MSDN-Dokumentation https://msdn.microsoft.com/en-us/library/twcad0zb.aspx –

+0

'Generics' sind für diesen Zweck gebaut. – Sparrow

+0

Das scheint eine Menge Arbeit zu sein, um [Enum.Parse()] (https://msdn.microsoft.com/en-us/library/kxydatf9 (v = vs.110) .aspx) neu zu erfinden. – itsme86

Antwort

3

Sie Ihre Methode generisch machen kann, um eine Typ-Parameter zu akzeptieren:

public static object MatchAccountType<T>(string acctTypeStr) 

Diese Art dann innerhalb der Methode im Code verwendet werden könnten:

public static object MatchAccountType<T>(string acctTypeStr) 
{ 
    var acctTypes = SharedUtils.GetEnumValues<T>(); 

    foreach (T acctType in acctTypes) 
    { 
     if (acctTypeStr.ToUpper() == acctType.ToString().ToUpper()) 
     { 
      return acctType; 
     } 
    } 

    return null; 
} 

Wenn Sie brauchen Um mehr mit diesem Typ im Code innerhalb der Methode zu interagieren, oder Beschränkungen zu geben, welche Typen verwendet werden können, gibt es more to it that you can investigate. Aber nur ein Typ-Parameter erfordert, kann getan werden, indem Sie es einfach zu einer generischen Methode machen.

+2

Sie können auch den Rückgabetyp eingeben. 'öffentliche statische T MatchAccountType '. Und vielleicht "T" auf eine "Struktur" beschränken? –

+1

@LeonardoChaia: Guter Punkt, es mag wahrscheinlich sein, dass der Rückgabetyp "Objekt" nicht das ist, was der Benutzer will, und er ist nur ein Überbleibsel früherer Versuche, dies zum Funktionieren zu bringen. – David

+0

Danke Jungs, das war genau das, was ich suche. – Nugs

Verwandte Themen