如何使用StructureMap通过代码定义默认构造函数?我不知道如何通过代码为StructureMap(版本2.5)中的类型定义默认构造函数(当它存在重载时)。我想获取一个服务实例,容器必须向其中注入Linq2Sql数据上下文实例。我用“引导程序”方法写了这个:ForRequestedType().TheDefault.Is.OfConcreteType();当我运行我的应用程序时,出现此错误:StructureMapexceptioncode:202NodefaultinstanceMyNamespace.DataisdefinedforPluginFamily.SqlRepository.MyDataContext,MyNamespace.Data,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null如果我评论排除所有我不需要的Linq2Sql生成的构造函数,它工作正常。更新:哦,我忘了说我不会使用[StructureMap.DefaultConstructor]属性。您可以使用ConstructedBy()指定构造函数。请试试这个:ForRequestedType().TheDefault.Is.ConstructedBy(()=>newMyDataContext());这对我有用。如果您使用的是Linq2Sql,我假设您还需要设置对象生命周期(InstanceScope)。我建议使用此代码,因为它会给您一些灵活性。ForRequestedType().CacheBy(InstanceScope.PerRequest).TheDefault.Is.OfConcreteType()SelectConstructor(()=>newMyDataContext());使用这段代码,您还可以进一步将接口定义注入到MyDataContext构造函数中SelectConstructor(()=>newMyDataContext((IDatabaseFactory)null));请记住为IDatabaseFactory实例定义一个带有StructureMap的具体类型。我不确定如何/是否可以使用流畅的界面/内部DSL来完成。但是如果您不担心污染您的域名,您可以使用属性吗?用[DefaultConstructor]标记首选构造函数按照惯例,StructureMap默认使用最贪婪的构造函数(具有最多参数的构造函数)。以上是C#学习教程:如何使用StructureMap通过代码定义默认构造函数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
