[注意有关此主题的问题,但没有一个看似与此特定情况相符]
我有两个ViewModel导出他们自己的接口类型
[Export(typeof(ITestExplorer))]
public class TestExplorerViewModel : Tool, ITestExplorer, IDataErrorInfo, IDisposable
{
// Implementation.
}
和
[Export(typeof(ITicker))]
public class TickerViewModel : Tool, ITicker, IDataErrorInfo
{
// Implementation.
}
ITicker
和ITestExplorer
都来自同一个ICoreDataProvider
界面
public interface ITicker : ITool, ICoreDataProvider { }
和
public interface ITestExplorer : ITool, ICoreDataProvider { }
我知道这两个接口本质上是相同的,但是,它们是必需的,因为我使用Caliburn micro来启动某些视图类型,其中包含从上面的每一个继承的不同类。
我的问题是我希望[ImportMany]
ICoreDataProviders
,但我无法将上述类导出为ITicker
和ICoreDataProvider
(或{{1} }和ITestExplorer
)[单个属性中的多个导出]。我想做
ICoreDataProvider
但我无法将导出类型切换为[ImportMany]
private IEnumerable<IBetDataProvider> dataProviderCollection;
,因为它们目前用于启动视图等。
ICoreDataProvider
&#34;的类型,还是导出必须是明确的? 我知道我可以通过类似
之类的反射来捏造这个ICoreDataProvider
但我不喜欢这样,因为我需要对视图是否开放等进行各种检查。
感谢您的时间。
答案 0 :(得分:4)
我无法将上述类导出为ITicker和ICoreDataProvider ... [单个属性中的多个导出]
您可以将它们作为两个界面导出,只需添加两次导出属性。
[Export(typeof(ITestExplorer))]
[Export(typeof(ICoreDataProvider))]
public class TestExplorerViewModel : Tool, ITestExplorer, IDataErrorInfo, IDisposable
{
// Implementation.
}
[Export(typeof(ITicker))]
[Export(typeof(ICoreDataProvider))]
public class TickerViewModel : Tool, ITicker, IDataErrorInfo
{
// Implementation.
}