2017-03-23 2 views
0

私は正しい方向を指すように助けが必要です。さまざまなタイプを処理できるメソッドを作成したいと考えています。私は何とかこれらの型を渡し、何とかそれらを使用する必要があります。これについてのガイダンスは素晴らしいでしょう。メソッドに渡すタイプは?

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

このMSDNのドキュメントをご覧くださいhttps://msdn.microsoft.com/en-us/library/twcad0zb.aspx –

+0

「Generics」はこの目的のために作成されています。 – Sparrow

+0

これは[Enum.Parse()](https://msdn.microsoft.com/en-us/library/kxydatf9(v = vs.110).aspx)を再開発するための多くの作業のようです。 – itsme86

答えて

3

あなたは型パラメータを受け入れるためにあなたの方法は、一般的なことができます:

をここで「TypeINeedToPassIn」は、はいあなたは、私は渡す必要がタイプを正しく推測される方法であり、

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; 
} 

あなたが必要な場合は、次のタイプは、メソッド内のコードで使用することができ

public static object MatchAccountType<T>(string acctTypeStr) 

メソッド内のコード内でその型とより多くのやりとりをする、または使用できる型を制限するなど、more to it that you can investigateがあります。しかし、単に型パラメータを必要とするのは、それを汎用メソッドにするだけです。

+2

戻り値の型を入力することもできます。 'public static T MatchAccountType 'です。そしておそらく 'T'を' struct'に制限しますか? –

+1

@LeonardoChaia:良い点として、 'object'の戻り値の型は、ユーザが望むものではなく、この作業を行う以前の試みの痕跡である可能性があります。 – David

+0

ありがとう、これは私が探しているものでした。 – Nugs

関連する問題