C# 如何注册接口<;T>;with T是Structuremap中的一个接口
我有一个接口C# 如何注册接口<;T>;with T是Structuremap中的一个接口,c#,asp.net,generics,structuremap,C#,Asp.net,Generics,Structuremap,我有一个接口 IFinancialMarketRepository<IFinancialMarket> 当我用代码注册StructureMap时 x.For(typeof(IFinancialMarketRepository<>)).Use(typeof(FinancialMarketRepository<>)); x.For(typeof(IFinancialMarketRepository))。使用(typeof(FinancialM
IFinancialMarketRepository<IFinancialMarket>
当我用代码注册StructureMap时
x.For(typeof(IFinancialMarketRepository<>)).Use(typeof(FinancialMarketRepository<>));
x.For(typeof(IFinancialMarketRepository))。使用(typeof(FinancialMarketRepository));
我有个口信
“未注册任何默认实例,无法自动确定类型'IFinancialMarketRepository'
没有为IFinancialMarketRepository
我还尝试使用以下代码:
ObjectFactory.Container.Configure(expression => expression.Scan(scanner =>
{
scanner.TheCallingAssembly();
scanner.AddAllTypesOf(typeof(IFinancialMarketRepository<>));
scanner.WithDefaultConventions();
}));
ObjectFactory.Container.Configure(表达式=>expression.Scan(扫描器=>
{
扫描器。装夹总成();
scanner.AddAllTypesOf(typeof(IFinancialMarketRepository));
scanner.WithDefaultConventions();
}));
但是错误消息仍然存在
更新
下面是我定义x的代码:
ObjectFactory.Initialize(x =>{
x.For(typeof(IFinancialMarketRepository<>)).Use(typeof(FinancialMarketRepository<>));
});
ObjectFactory.Initialize(x=>{
x、 用于(类型of(IFinancialMarketRepository))。使用(类型of(FinancialMarketRepository));
});
您实际上拥有以下代码:
public class Entity { }
public interface IFinancialMarket { }
public interface IFinancialMarketRepository<T> { }
public class FinancialMarketRepository<TEntity> : IFinancialMarketRepository<TEntity>
where TEntity : Entity, IFinancialMarket { }
var fmr = new FinancialMarketRepository<IFinancialMarket>();
公共类实体{}
金融市场公共界面{}
公共接口IFinancialMarketRepository{}
公共类FinancialMarketRepository:IFinancialMarketRepository
其中潜在性:实体,金融市场{}
而且,使用StructureMap,您正试图创建IFinancialMarketRepository
的一个实例-该StructureMap已被告知实例化FinancialMarketRepository
现在,如果我尝试使用以下代码:
public class Entity { }
public interface IFinancialMarket { }
public interface IFinancialMarketRepository<T> { }
public class FinancialMarketRepository<TEntity> : IFinancialMarketRepository<TEntity>
where TEntity : Entity, IFinancialMarket { }
var fmr = new FinancialMarketRepository<IFinancialMarket>();
var fmr=new FinancialMarketRepository();
…编译器告诉我:
类型“IFinancialMarket”不能用作泛型类型或方法“FinancialMarketPository”中的类型参数“TEntity”。没有从“IFinancialMarket”到“Entity”的隐式引用转换
你基本上是在尝试创建一个不符合泛型约束的类型。这就是它失败的原因。如果没有使用StructureMap,我猜这是因为
FinancialMarketPository
不是一个可以创建的对象。请进一步解释,我不理解你的想法。你不能编写代码var x=新的FinancialMarketPository()
。似乎。使用(…)
类型应该是可创建的。我可能错了,但这似乎是一个公平的猜测。你认为你可以提供声明x
的代码吗?那么我可以玩一下代码。我在测试代码中添加了StructureMap,但我在其中任何地方都找不到ObjectFactory
类。你能提供我需要的所有代码吗需要什么?