C# 如何在StructureMap中注入实现特定通用接口的对象列表?
我有两个接口:C# 如何在StructureMap中注入实现特定通用接口的对象列表?,c#,structuremap,C#,Structuremap,我有两个接口: public interface IResult {} public interface IDataFetcher<T> where T : IResult { T Fetch(); } 当我在MyHandler的构造函数中设置断点时,fetchers变量为空(非空) 我需要做什么来解决这个问题?为了确保fetchers中充满了IDataFetcher?的实现,经过几个小时的尝试和谷歌搜索,我找到了答案。我做的每件事都是对的,除了一件事:让IDataFetc
public interface IResult
{}
public interface IDataFetcher<T> where T : IResult
{
T Fetch();
}
当我在MyHandler
的构造函数中设置断点时,fetchers
变量为空(非空)
我需要做什么来解决这个问题?为了确保fetchers中充满了
IDataFetcher
?的实现,经过几个小时的尝试和谷歌搜索,我找到了答案。我做的每件事都是对的,除了一件事:让IDataFetcher协变:
public interface IDataFetcher<out T> where T : IResult
{}
公共接口IDataFetcher,其中T:IResult
{}
这非常有意义,因为我在泛型类型中使用了具体类型:
public class SomeClass : IResult
{
}
public class ConcreteFetcher : IDataFetcher<SomeClass>
{
public SomeClass Fetch()
{
// do something
}
}
public类SomeClass:IResult
{
}
公共类ConcreteFetcher:IDataFetcher
{
公共类获取()
{
//做点什么
}
}
干杯
public interface IDataFetcher<out T> where T : IResult
{}
public class SomeClass : IResult
{
}
public class ConcreteFetcher : IDataFetcher<SomeClass>
{
public SomeClass Fetch()
{
// do something
}
}