私はGeneric型を必要とするBaseクラスを持っています。これはEntityObject
かカスタムタイプの鉱山です。
は、私はどちらかのタイプに基本クラスを制約する方法を必要と私はまた、一般的には、特定の型であるかどうかを確認する方法が必要です。
私はif (T is EntityObject)
かif (typeof(T) is EntityObject)
それどちらか私は、変数としてTを使用しています、またはtypeof(T)
のために、私はそれは「与えられた型のものではありません」と言い得ます。複数の制約タイプまたはGenericのタイプを確認しますか?
0
A
答えて
2
あなたは使用することができます。
if (typeof(T) == typeof(EntityObject))
または
if (typeof(EntityObject).IsAssignableFrom(typeof(T)))
の要件に応じて。
もちろん、これは実行時のチェックです。コンパイル時に "1つの..."という制約を設定することはできません。あなたのシナリオに応じて、1つの制約のないプライベートメソッド(publicメソッドから呼び出されるだけなので適切な型を持っていることがわかっています)を呼び出す2つの異なる名前付き制約付きパブリックメソッドを持つことが適切です。
0
2つの無関係なタイプのために制約する方法はありません。一般的なタイプ(インターフェースのような)か、制約付きジェネリッククラスの2つのバージョンが必要です。 Tは拘束されないと仮定すると、
、あなたはTが特定の型であるかどうかをチェックするためにif (typeof(T).Equals(typeof(EntityObject))) { ... }
を使用することができます。
関連する問題
- 1. 可変個引数は、制約のタイプ
- 2. Javascriptの確認または他のタイプの確認
- 3. Mongoid embeds_manyタイプ制約
- 4. Database Initializer:タイプ引数 'Configuration'が制約タイプ 'DbContext'を継承または実装していません
- 5. Typescript promise genericタイプ
- 6. スクリプト内のオブジェクトのタイプを確認していますか?
- 7. genericからのParameterizedTypeのタイプを取得
- 8. valgrindの複数のタイプの抑制
- 9. genericタイプのprotobuf-net継承
- 10. タイプのプロシージャ参照を確認していますか?
- 11. 'MyIdentityModels.User'が 'TUser'タイプの制約に違反しています
- 12. タイプ制約を持つHaskellタイプのファミリーインスタンス
- 13. タイプ制約を持つGADTのFunctorインスタンス
- 14. c#generic制約はどこですか?
- 15. Haxe汎用制約タイプを格納しています
- 16. PureScriptは同じ制約タイプと一致しません
- 17. タイプ 'String'は 'SequenceType'へのプロトコルを確認していません
- 18. ジェネリックメソッドで制約タイプを使用する
- 19. GraphQLは複数のタイプのオブジェクトをサポートしていますか?
- 20. ジェネリックでタイプのタイプを制限できますか?
- 21. 一般的な制約タイプのデフォルト値
- 22. タイプのアプリケーションと制約種類
- 23. ElasticSearch NEST - 複数のタイプを検索しますが、選択したタイプのみにフィルタを適用します。
- 24. MacWire:タイプの複数の値が見つかりました
- 25. 例外タイプのパフォーマンスを確認する
- 26. ユーザのタイプを確認するmysqli php
- 27. NSDATAタイプの確認方法は?
- 28. タイプ 'Generic <String>'の値を 'Generic <Any>'に変換できません
- 29. 1つまたは複数のタイプをエクスポートする
- 30. 複数のタイプに対してQuickCheckプロパティをテストしますか?
私が確認したい第二のタイプは、実際に基本クラスである場合には、このカバーはウィル? Tは実際には "MyObject"になりますが、私はMyObjectが継承する "MyBase"をチェックします。 –
JamesP.Wright @ 'typeof演算(MyBase).IsAssignableFrom(typeof演算(T))' 'T 'は' MyBase'のサブクラスである場合はtrueを返す必要があります –