これは、私が管理しているイベントアグリゲーターであるMemBusをWindowsランタイムの世界に移植しようとしたときのインターフェイスです。
public interface ISubscriber
{
IDisposable Subscribe<M>(Action<M> subscription);
#if WINRT
[Windows.Foundation.Metadata.DefaultOverload]
#endif
IDisposable Subscribe(object subscriber);
IObservable<M> Observe<M>();
}
私が得ているのはコンパイラエラーです:
「エラーWME1031:'
MemBus.ISubscriber.Subscribe<M>(System.Action<M>)
'はジェネリックメソッドです。Windowsランタイムメソッドをジェネリックにすることはできません。」
なぜそうなのか疑わしいだけですが、誰かが明確にできるなら、してください。
私の主な質問は、コードをWindowsランタイムに移植するときに、これにどのように対処する必要があるかということです。
ジェネリックスでは、より高いレベルの機能が数多く発生します。実際、Windowsランタイムではジェネリッククラスを使用しています(例List<T>
)。RTコンポーネントはジェネリック型をどのように公開することになっていますか?そうでない場合は、.NET 1.1コードの記述方法、つまりオブジェクトイン、オブジェクトアウト、キャストに戻るために利用できる唯一の代替手段はありますか?