問題タブ [generics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
21065 参照

c# - テンプレートのジェネリック型を動的に作成する

CreateChannel メソッドを呼び出すために型を期待する ChannelFactory を使用して WCF をプログラミングしています。例えば:

私の場合、ルーティングを行っているため、チャネル ファクトリがどのタイプを使用するかわかりません。メッセージ ヘッダーを解析して型を特定することはできますが、Type のインスタンスがあったとしても、ChannelFactory がジェネリック型を期待する場所に渡すことができないため、そこでレンガの壁にぶつかります。

この問題を非常に簡単な言葉で言い換える別の方法は、次のようなことをしようとしているということです。

C#内で活用できるこれへのアプローチはありますか?

0 投票する
7 に答える
13510 参照

c# - 一般的に型指定されたクラスの C# 拡張メソッドをどのように記述しますか?

これは単純なものであることを願っています。

System.Web.Mvc.ViewPage< T > クラスに拡張メソッドを追加したいと考えています。

この拡張メソッドはどのように見えるべきですか?

私の最初の直感的な考えは次のようなものです。

解決

一般的な解決策はthis answerです。

System.Web.Mvc.ViewPage クラスを拡張するための具体的な解決策は、一般的な解決策から始めた以下の私の答えです。

違いは、ジェネリックに型指定されたメソッド宣言と、ジェネリック型を参照型として強制するためのステートメントの両方が必要な特定のケースにあります。

0 投票する
4 に答える
5070 参照

java - パラメータ化された Class インスタンスを取得する方法

ジェネリックが導入されてから、Class はパラメータ化され、List.class は Class<List> を生成します。これは明らかです。

私が理解できないのは、それ自体がパラメータ化されたタイプの Class のインスタンス、つまり Class<List<String>> を取得する方法です。このスニペットのように:

私はこの問題のバリエーションにかなり頻繁に出くわしますが、何かを見落としているだけなのか、それとも本当に良い方法がないのか、まだわかりません。提案をありがとう。

0 投票する
29 に答える
531423 参照

java - Javaでジェネリック型のインスタンスを作成しますか?

Javaでジェネリック型のインスタンスを作成することは可能ですか? 私が見たものに基づいて、答えはno型消去による)であると考えていますが、誰かが私が見逃しているものを見ることができれば興味があります:

編集:スーパータイプトークンを使用して問題を解決できることがわかりましたが、以下の回答のいくつかが示しているように、多くのリフレクションベースのコードが必要です.

誰かが Ian Robertson のArtima Articleとは劇的に異なる何かを考え出すかどうかを確認するために、これをしばらく開いたままにしておきます。

0 投票する
29 に答える
67888 参照

c# - ジェネリックの何がクールなのか、なぜジェネリックを使うのか?

私はこのソフトボールを公園の外で打ちたいと思っている人に提供しようと思いました。ジェネリックとは何ですか、ジェネリックの利点は何ですか、なぜ、どこで、どのように使用する必要がありますか? かなり基本的なものにしてください。ありがとう。

0 投票する
22 に答える
430072 参照

c# - T を Enum に制約するジェネリック メソッドを作成する

Enum.Parseという概念を拡張する機能を構築しています

  • Enum 値が見つからない場合にデフォルト値を解析できるようにします
  • 大文字と小文字を区別しない

だから私は次のように書いた:

エラー Constraint cannot be special class が発生していますSystem.Enum

十分に公平ですが、ジェネリック列挙型を許可する回避策はありますか、それともParse関数を模倣して型を属性として渡す必要がありますか?これにより、醜いボクシング要件がコードに強制されます。

編集以下のすべての提案は大歓迎です、ありがとう。

解決しました(大文字と小文字を区別しないようにループを残しました-XMLを解析するときにこれを使用しています)

編集: (2015 年 2 月 16 日) Christopher Currens は、以下の MSIL または F# でコンパイラを強制するタイプ セーフなジェネリック ソリューションを投稿しました。解決策がページのさらに上にある場合は、この編集を削除します。

編集2:(2021年4月13日)C#7.3以降、これに対処し、サポートされているため、受け入れられた回答を変更しましたが、上位の回答を完全に熟読することは、学術的および歴史的関心のために価値があります:)

0 投票する
3 に答える
1048 参照

java - 一般的なメソッドタイプの安全性

NodeType私はsとsの概念を持っていNodeます。ANodeTypeは、インスタンスを作成できる一連のメタデータですNode(クラスとオブジェクトの関係全体によく似ています)。

さまざまなNodeType実装とさまざまなノードの実装があります。

私のAbstractNodeType(NodeTypesのトップレベル)には、サブクラスによって実装されると、正しいNodeインスタンスを作成するababstractcreateInstance()メソッドがあります。

私のNodeType実装では、次のようなメソッドを実装します。

これはすべてうまくいっていpublic Thing createInstance()ますが、型の安全性についての警告を作成します。具体的には:

タイプの安全性:タイプThingTypeからのcreateInstance()の戻りタイプThingは、タイプAbstractNodeTypeからのTに準拠するために、チェックされていない変換が必要です。

そのような警告を引き起こすために私は何を間違っていますか?

これを修正するためにコードをリファクタリングするにはどうすればよいですか?

@SuppressWarnings("unchecked")良くありません。問題を無視せずに、正しくコーディングしてこれを修正したいと思います。

0 投票する
8 に答える
6543 参照

c# - .NET ジェネリックを学習するための最適なリソースは?

仕事で .NET ジェネリックを使用したことはありませんが、かなり人気があることは理解しています。誰かがそれらを学ぶための良いリンクや本の提案を持っていますか? おまけとして。私は.NETジェネリックコレクションとは何か、そしてそれらが何をするのかを漠然としか理解していません....NETの通常のコレクションよりも大きな利点を得るためにそれらをどのように使用するかの実用的な例はありますか?

0 投票する
1 に答える
478 参照

c# - .Net Generics を使用してテンプレート パラメーターを継承するにはどうすればよいですか?

これができるようになりたいです。

これがオブジェクト構造です

これは機能しますか?

0 投票する
12 に答える
6255 参照

c# - ジェネリックと配列リスト

私がここで取り組んでいるシステムは、.net 2.0 より前に作成されたものであり、ジェネリックの利点がありませんでした。最終的に 2.0 に更新されましたが、時間の制約によりコードのリファクタリングは行われませんでした。オブジェクトとして物を格納する ArraysLists などをコードが使用する場所がいくつかあります。

パフォーマンスの観点から、ジェネリックを使用するためにコードを変更することはどの程度重要ですか? ボックス化とボックス化解除などのパフォーマンスの観点からは非効率的ですが、変更することで実際にパフォーマンスがどの程度向上するのでしょうか? ジェネリックは将来的に使用するものですか、それとも良心の努力を払って古いコードを更新する必要があるほど十分なパフォーマンスの変化がありますか?