使用できるタイプを厳密に拘束したり強制したりする方法はありますか?使用できるタイプを厳密に適用する方法はありますか? (非常にExplicit Casting)
S <: T
私はランタイム
If TypeOf value Is T Then
でこれを行うことができます。しかし、これはコンパイル時のチェックが
Option Strict On
より好ましいだろう、ランタイムチェックです
Method(value As T) ' Any Type of T including subtypes of T
Method(value Is T) ' Only take a T not a subtype of T
ような何か
これは唯一の制限ですそれは(暗黙的な)型の拡大型になります。
すべてのタイプのCoerecionsは明示的でなければなりませんでした。
可能ですか?もしそうなら、どのように?あなたは派生型を受け入れるかどうかには発言権を持っていない - タイプのユーザーとして
サブタイプがベースタイプの有効な代替語句ではない場合はどうしますか(一般に[Liskov Substitution Principle](http://en.wikipedia.org/wiki/Liskov_substitution_principle)))?あなたのシナリオは[Visitor](http://stackoverflow.com/questions/8828857/upcasting-helper-method/8830079#8830079)のようなパターンに向いています。 –