Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
350 views
in Technique[技术] by (71.8m points)

c# - How to define a default constructor by code using StructureMap?

I can't figure out how to define the default constructor (when it exists overloads) for a type in StructureMap (version 2.5) by code.

I want to get an instance of a service and the container has to inject a Linq2Sql data context instance into it.

I wrote this in my 'bootstrapper' method :

ForRequestedType<MyDataContext>().TheDefault.Is.OfConcreteType<MyDataContext>();

When I run my app, I got this error :

StructureMap Exception Code: 202
No Default Instance defined for PluginFamily MyNamespace.Data.SqlRepository.MyDataContext, MyNamespace.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

If I comment out all Linq2Sql generated contructors that I don't need, it works fine.

Update : Oh, and I forgot to say that I would not use the [StructureMap.DefaultConstructor] attribute.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can specify a constructor with the ConstructedBy(). Please try this:

ForRequestedType<MyDataContext>().TheDefault.
Is.ConstructedBy(() => new MyDataContext());

This worked for me.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...