にパラメータとして単にタイプを渡します。は私がこれを行うにため仮にそれが便利だろうC#の
はい、私はブールフラグとしてそれを行うか、同様の可能性があり、おそらくこれを渡す方法があった場合、私は疑問に思い、そして尋ねる:
typeof演算(引数[1])または類似の...
また、メソッドをオーバーライドしたり、ジェネリックなどを使用したりすることもできます。これを行う方法はさまざまですが、これが可能かどうかは不思議でした。また
にパラメータとして単にタイプを渡します。は私がこれを行うにため仮にそれが便利だろうC#の
はい、私はブールフラグとしてそれを行うか、同様の可能性があり、おそらくこれを渡す方法があった場合、私は疑問に思い、そして尋ねる:
typeof演算(引数[1])または類似の...
また、メソッドをオーバーライドしたり、ジェネリックなどを使用したりすることもできます。これを行う方法はさまざまですが、これが可能かどうかは不思議でした。また
一般的なアプローチは2つあります。int val = (int)GetColumnValue(columnName, typeof(int));
他のオプションは、ジェネリックを使用することです:
T GetColumnValue<T>(string columnName)
{
// If you need the type, you can use typeof(T)...
これがボクシングを回避し、提供するという利点を有する第一に、あなたはこれは以下のように呼ばれることになるSystem.Type
object GetColumnValue(string columnName, Type type)
{
// Here, you can check specific types, as needed:
if (type == typeof(int)) { // ...
を渡すことができますいくつかのタイプの安全性は、と呼ばれる:int val = GetColumnValue<int>(columnName);
また、拡張メソッドpublic static T GetColumnValue
いくつかの引数を持つメソッドを定義し、そのうちの1つはジェネリックでなければなりませんか?ジェネリックはメソッド引数リストの前に定義されているので、どのメソッドをジェネリックにするべきか、どのように知っていますか? – BadmintonCat
@BadmintonCat 'T Foo
foo.GetColumnValues(dm.mainColumn, typeof(string))
、あなたは一般的な方法で使用できます。
public void GetColumnValues<T>(object mainColumn)
{
GetColumnValues(mainColumn, typeof(T));
}
を、あなたはそれが好きで使用することができます
foo.GetColumnValues<string>(dm.mainColumn);
あなたは引数として型を渡すことができ、しかしそうするには、typeof
を使用する必要があります:
foo.GetColumnValues(dm.mainColumn, typeof(int))
このメソッドは、タイプがType
のパラメータを受け入れる必要があります。 getColumnsメソッドは渡された種類に応じて内部の異なるメソッドを呼び出す
。
この動作が必要な場合は、型を引数として渡すのではなく、代わりに型パラメータを使用する必要があります。あなたがこれを行うことができます
foo.GetColumnValues<int>(dm.mainColumn)
なぜdownvote? –
Upvoteでdownvoteをオフセットするには –
は、ちょうどあなたがType型の引数に使用することができますtypeof()
foo.GetColumnValues(typeof(int))
public void GetColumnValues(Type type)
{
//logic
}
でそれを包む - 、IOWを渡すtypeof演算(int型)。ジェネリックを(おそらくより効率的な)アプローチに使用することもできます。
foo.GetColumnValues(dm.mainColumn, typeof(int));
foo.GetColumnValues(dm.mainColumn, typeof(string));
またはジェネリックを使用:
foo.GetColumnValues<int>(dm.mainColumn);
foo.GetColumnValues<string>(dm.mainColumn);
投票は何のためですか? –
私はあなたにDVDを書いていませんでしたが、それが呼び出される方法を示していて、関数定義を指定していなかったからかもしれません – JConstantine
人々がスプーンの供給を必要とするときに嫌いです。 MSDNの答え+本当に短い読書で十分です。私は、有権者は反論者であると反論している。 –
ジェネリックス??????? – leppie
実際にfooが何であるかによって、私の考えは正確です。 'foo.GetColumnValues(dm.mainColumn)'は行く方法です。 –
私が言ったように、これを行うための他の方法があります(ブール値フラグ、ジェネリック、メソッドをオーバーライドしています)。パラメータとして使用できるかどうかは疑問でした。 –