这是一个接口,取自我尝试将我维护的事件聚合器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 代码(即对象输入、对象输出和强制转换)的唯一替代方法?