私は自分のアプリケーションでsilverlight 4.0を使用しています。私の派生クラスではシルバーライトの共分散の代わりに4.0 IEnumerable <T>
class BaseClass
{
protected CustomRequest GetCustomRequest(IEnumerable<IRequestType> types)
{
//Some code here...
}
}
下に述べたように、私は文を呼び出すにrequestTypesの種類があることをここでエラー
IEnumerable<RequestType> requestTypes = CodeToGetThis();
GetCustomRequest(requestTypes)
注意を取得し、以下のように私は、このメソッドを呼び出すとき、私は私の基本クラスのメソッドを持っていますの派生型IRequestTypeの列挙型です。
これは、c#4.0に共分散が導入されているため、デスクトップアプリケーションでうまく機能します。しかし、Silverlight 4.0の場合、IEnumerableインターフェイスでは行われていないようです。
だから私の銀色アプリケーションでこれを使用するべきである最良の代替アプローチは何ですか?
私は、メソッドオーバーロードを使用して行うことができますが、これを行う方法がわかりません。
UPDATE:私は質問の最初のドラフトで逃した ことの一つは、私はそれゆえ私のために困難になり、各派生タイプのオーバーロードされたメソッドをcraeating IRequestTypeの多くの派生型を持つことになり、です。
ありがとうございました。私はこれを試して、これは動作します。 これはオーバーロードよりも優れたアプローチだと思いますか? – Maheep
これは、あなたのオーバーロードされた方法でこれを行う必要があります。オーバーロードによってコードが綺麗になり、このメソッドを呼び出すインスタンスがたくさんある場合は、それを実行します。それが1または2であれば、おそらくオーバーキルです。 –