パラメーターの1つが動的である場合、どのようにして型のコンストラクターを取得できますか?

user565869

このコンストラクターを持つ一連のクラスがあります。

MyClass(Reader reader, dynamic json)  { ... }

ジェネリックメソッドでオブジェクトをインスタンス化する必要があります。そうするために、私はコンストラクターをこのように取得しようとしました:

class Reader
...
T  Get<T>(string id)
    {
    dynamic  json        = GetData(id);
    var      constructor = typeof(T).GetConstructor(new Type[] { typeof(Reader), typeof(dynamic) });
    return constructor.Invoke(new object[] { this, json });
    }

ただし、この状況ではどちらdynamictypeof(dynamic)受け入れられませそうするための適切な方法は何ですか?コンストラクターは確かに存在します。この状況に対する拘束力のあるフラグはないようです。

今のところ、JsonWrapper回避策として非常に単純なクラスを作成しました

class JsonWrapper
{
JsonWrapper(dynamic json) { Json = json; }
dynamic  Json  { get;  private set; }
}
...
var  constructor = typeof(T).GetConstructor(new Type[] { typeof(Reader), typeof(JsonWrapper) });

GetConstructors()これらのクラスには1つしかないため、最初のエントリを呼び出して取得することもできますが、それは壊れやすいでしょう。

AlexD

ただし、この状況ではどちらdynamictypeof(dynamic)受け入れられませ

typeof(object)代わりに使用することを検討してくださいtypeof(dynamic)

MSDNは約言うdynamicこと

ほとんどの場合、それはタイプオブジェクトを持っているように機能します。

特に、次のコードは「タイプ '.... JsonWrapper'は、同じパラメータータイプを持つ 'JsonWrapper'というメンバーを既に定義しています」というエラーで失敗します

public class JsonWrapper
{
    public JsonWrapper(dynamic json) { }
    public JsonWrapper(object json) { }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コンストラクター引数の1つがList型である場合、nullパラメーターを使用してプライベートコンストラクターをテストすることは可能ですか?

分類Dev

コンストラクターにつまようじのパラメーターがある場合にファクトリを介して注入する

分類Dev

パラメータ0がある場合でも、requestLocationUpdates()はどのように場所を取得しますか?

分類Dev

クラスコンストラクターが同じクラスのパラメーターをどのように持つことができますか?

分類Dev

2つの型パラメーターが同じである場合に、2つのコンストラクターを明確にする

分類Dev

2つの型パラメーターが同じである場合に、2つのコンストラクターを明確にする

分類Dev

パラメータをクラスに渡して、そのパラメータがコンストラクタに渡されたときにJFrameが移動するようにするにはどうすればよいですか?

分類Dev

クラス変数がc#のコンストラクターによって受信された仮パラメーターと同じである場合、誰かがより良い命名スキームを提案できますか?

分類Dev

どのように私はScalaで、それのインスタンスを取得するには、オブジェクトの型を持つクラスをパラメータ化することができますか?

分類Dev

複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

分類Dev

別のテンプレートパラメータに基づいて、テンプレートパラメータを1つの列挙型クラスとして修正するにはどうすればよいですか?

分類Dev

さまざまなパラメーターと値に対して、次のコマンドを自動化して一般化する方法(bashスクリプトで使用する場合)はどうすればよいですか?

分類Dev

パラメータが特定の基本型から派生した任意の型を持つことができる場合、abstractmethodのパラメータの型に注釈を付けるにはどうすればよいですか?

分類Dev

EnumConverterコンストラクターはどのようにして型パラメーターを取得しますか

分類Dev

スーパークラスタイプのコレクションがある場合、特定のサブクラスタイプのすべてのアイテムを取得するにはどうすればよいですか?

分類Dev

kotlinpoetで単一の型パラメーターを使用してKotlin「ユニット」型のコンストラクターパラメーターを生成するにはどうすればよいですか?

分類Dev

親がパブリックの場合、どのようにして子コンストラクターをプライベートにしますか?

分類Dev

Dartでは、サブクラスのジェネリック型がスーパークラスの型を拡張する場合、サブクラスはどのようにしてスーパークラスを拡張できますか?

分類Dev

Mongooseを使用してMongoデータベースのコレクションをクエリする場合、クエリ用語のような値がどこにあるかをどのように見つけることができますか?

分類Dev

WCFサービスはどのようにしてクエリパラメータを取得できますか?

分類Dev

ベースと派生の両方が派生型パラメーターでテンプレート化されている場合にベースコンストラクターを呼び出すときのコンパイラエラー

分類Dev

関数のパラメータがステートメント内の文字列である場合、どのように記述すればよいですか?

分類Dev

1つのインターフェースを実装するクラスが複数ある場合、@ autowiredはどのように機能しますか?

分類Dev

列挙型クラスがJavaのメソッドのパラメータである場合、列挙型の値を取得するにはどうすればよいですか?

分類Dev

多くのメソッド/コンストラクターを持つクラスがある場合、そのプロパティにデータを入力するだけであれば、新しいクラスを作成する方がよいでしょうか。

分類Dev

Javaコンパイラーは、これらの2つのコンストラクター/メソッドをどのように区別できますか?

分類Dev

インターフェイスに複数のジェネリックパラメータがある場合、「[type]を[interface]に暗黙的に変換できません」エラーを解決するにはどうすればよいですか?

分類Dev

ブロックに2つのパラメーターがある場合、Ruby Array#mapはどのように動作しますか?

分類Dev

パラメータの1つが依存性である場合、パラメータを使用してmvc core 2の依存性注入を構成するにはどうすればよいですか?

Related 関連記事

  1. 1

    コンストラクター引数の1つがList型である場合、nullパラメーターを使用してプライベートコンストラクターをテストすることは可能ですか?

  2. 2

    コンストラクターにつまようじのパラメーターがある場合にファクトリを介して注入する

  3. 3

    パラメータ0がある場合でも、requestLocationUpdates()はどのように場所を取得しますか?

  4. 4

    クラスコンストラクターが同じクラスのパラメーターをどのように持つことができますか?

  5. 5

    2つの型パラメーターが同じである場合に、2つのコンストラクターを明確にする

  6. 6

    2つの型パラメーターが同じである場合に、2つのコンストラクターを明確にする

  7. 7

    パラメータをクラスに渡して、そのパラメータがコンストラクタに渡されたときにJFrameが移動するようにするにはどうすればよいですか?

  8. 8

    クラス変数がc#のコンストラクターによって受信された仮パラメーターと同じである場合、誰かがより良い命名スキームを提案できますか?

  9. 9

    どのように私はScalaで、それのインスタンスを取得するには、オブジェクトの型を持つクラスをパラメータ化することができますか?

  10. 10

    複数の同じ機能クラス(コントローラー)を、データオブジェクトをパラメーターとして受け取る1つに組み合わせるにはどうすればよいですか?

  11. 11

    別のテンプレートパラメータに基づいて、テンプレートパラメータを1つの列挙型クラスとして修正するにはどうすればよいですか?

  12. 12

    さまざまなパラメーターと値に対して、次のコマンドを自動化して一般化する方法(bashスクリプトで使用する場合)はどうすればよいですか?

  13. 13

    パラメータが特定の基本型から派生した任意の型を持つことができる場合、abstractmethodのパラメータの型に注釈を付けるにはどうすればよいですか?

  14. 14

    EnumConverterコンストラクターはどのようにして型パラメーターを取得しますか

  15. 15

    スーパークラスタイプのコレクションがある場合、特定のサブクラスタイプのすべてのアイテムを取得するにはどうすればよいですか?

  16. 16

    kotlinpoetで単一の型パラメーターを使用してKotlin「ユニット」型のコンストラクターパラメーターを生成するにはどうすればよいですか?

  17. 17

    親がパブリックの場合、どのようにして子コンストラクターをプライベートにしますか?

  18. 18

    Dartでは、サブクラスのジェネリック型がスーパークラスの型を拡張する場合、サブクラスはどのようにしてスーパークラスを拡張できますか?

  19. 19

    Mongooseを使用してMongoデータベースのコレクションをクエリする場合、クエリ用語のような値がどこにあるかをどのように見つけることができますか?

  20. 20

    WCFサービスはどのようにしてクエリパラメータを取得できますか?

  21. 21

    ベースと派生の両方が派生型パラメーターでテンプレート化されている場合にベースコンストラクターを呼び出すときのコンパイラエラー

  22. 22

    関数のパラメータがステートメント内の文字列である場合、どのように記述すればよいですか?

  23. 23

    1つのインターフェースを実装するクラスが複数ある場合、@ autowiredはどのように機能しますか?

  24. 24

    列挙型クラスがJavaのメソッドのパラメータである場合、列挙型の値を取得するにはどうすればよいですか?

  25. 25

    多くのメソッド/コンストラクターを持つクラスがある場合、そのプロパティにデータを入力するだけであれば、新しいクラスを作成する方がよいでしょうか。

  26. 26

    Javaコンパイラーは、これらの2つのコンストラクター/メソッドをどのように区別できますか?

  27. 27

    インターフェイスに複数のジェネリックパラメータがある場合、「[type]を[interface]に暗黙的に変換できません」エラーを解決するにはどうすればよいですか?

  28. 28

    ブロックに2つのパラメーターがある場合、Ruby Array#mapはどのように動作しますか?

  29. 29

    パラメータの1つが依存性である場合、パラメータを使用してmvc core 2の依存性注入を構成するにはどうすればよいですか?

ホットタグ

アーカイブ