Click here to Skip to main content
15,895,777 members
Home / Discussions / ASP.NET
   

ASP.NET

 
GeneralRe: AjaxControlToolkit ModalPopupExtender in code behind Pin
Robert Espindola27-Feb-11 16:46
Robert Espindola27-Feb-11 16:46 
GeneralRe: AjaxControlToolkit ModalPopupExtender in code behind Pin
Not Active27-Feb-11 17:11
mentorNot Active27-Feb-11 17:11 
AnswerRe: AjaxControlToolkit ModalPopupExtender in code behind Pin
Vimalsoft(Pty) Ltd28-Feb-11 22:37
professionalVimalsoft(Pty) Ltd28-Feb-11 22:37 
QuestionA proper DI implementation? Pin
Member 391904927-Feb-11 8:59
Member 391904927-Feb-11 8:59 
AnswerRe: A proper DI implementation? Pin
James Simpson28-Feb-11 3:57
James Simpson28-Feb-11 3:57 
GeneralRe: A proper DI implementation? Pin
Member 391904928-Feb-11 19:21
Member 391904928-Feb-11 19:21 
GeneralRe: A proper DI implementation? Pin
Member 391904928-Feb-11 20:01
Member 391904928-Feb-11 20:01 
GeneralRe: A proper DI implementation? Pin
James Simpson28-Feb-11 22:55
James Simpson28-Feb-11 22:55 
In the example you provided you are not initializing the Order class via the container.

uc.Resolve<order>() creates an instance of the Order and then resolves its dependencies

This is why you would end up with more specialized services to initialize the objects, that are typically implemented with the container.

e.g Lets, say Order is an Entity in a domain model, you have several options about how you initialize a new one, a typical way is to have a factory, e.g IOrderFactory.Create(). Lets say for the sake of argument you are using ASP.NET and you are using dependency injection to initialize your controller paramerters via a custom controller factory (if you are unsure about that, basically a DI container is supplying dependencies to Controllers)

You would have a dependency to IOrderFactory in your controller constructor which would implement create as:

return uc.Resolve<order>();

Your order factory would be injected to your controller, and you can call orderFactory.Create() to get a new instance.

Or..

Inject the DI container into your controllers and just always call .Resolve. But I dont like to know about the DI container anywhere in my code, I prefer to have proper named services. e.g IOrderFactory is explicit, it is a Factory for creating Order objects, but by just handing a reference to your DI container everywhere you are actually hiding the dependencies. (e.g from the constructor parameters, it is not obvious what dependencies are going to be used and why)

Also - (off topic), with the example you specified above, if Order is an entity in your domain model, and you are attempting to add logging functionality to it, it is better to use a Dynamic Proxy pattern to acheive this (or) Aspect Orientated programming. It is not a dependency of the Order object to have logging functionality, it is more likely a dependency of your infrasturcture. So rather than cluttering up your order object with stuff it does not need, you can inject a Logging mechanism transparently using something like Castle Dynamic Proxy (?) You will still need to get the object from some sort of factory, but it will make your classes much cleaner.
James Simpson
Web Solutions Developer
www.methodworx.com

GeneralRe: A proper DI implementation? Pin
Member 39190491-Mar-11 8:44
Member 39190491-Mar-11 8:44 
GeneralRe: A proper DI implementation? Pin
Member 39190491-Mar-11 9:07
Member 39190491-Mar-11 9:07 
GeneralRe: A proper DI implementation? Pin
James Simpson1-Mar-11 10:02
James Simpson1-Mar-11 10:02 
AnswerRe: A proper DI implementation? Pin
Spectre_0013-Mar-11 2:03
Spectre_0013-Mar-11 2:03 
Questionpayment processor - your experience Pin
Jassim Rahma26-Feb-11 20:55
Jassim Rahma26-Feb-11 20:55 
AnswerRe: payment processor - your experience Pin
Abhijit Jana26-Feb-11 22:18
professionalAbhijit Jana26-Feb-11 22:18 
GeneralRe: payment processor - your experience Pin
Jassim Rahma3-Mar-11 1:12
Jassim Rahma3-Mar-11 1:12 
AnswerRe: payment processor - your experience Pin
N a v a n e e t h27-Feb-11 2:56
N a v a n e e t h27-Feb-11 2:56 
GeneralRe: payment processor - your experience Pin
Vimalsoft(Pty) Ltd28-Feb-11 22:38
professionalVimalsoft(Pty) Ltd28-Feb-11 22:38 
QuestionHow to save Session Data using Oracle? Pin
Member 297299226-Feb-11 8:55
Member 297299226-Feb-11 8:55 
AnswerRe: How to save Session Data using Oracle? Pin
Abhijit Jana26-Feb-11 22:22
professionalAbhijit Jana26-Feb-11 22:22 
QuestionWindows service failing to get the data from Database Pin
indian14325-Feb-11 12:21
indian14325-Feb-11 12:21 
AnswerRe: Windows service failing to get the data from Database Pin
N a v a n e e t h26-Feb-11 14:35
N a v a n e e t h26-Feb-11 14:35 
AnswerRe: Windows service failing to get the data from Database Pin
coolestCoder28-Feb-11 2:08
coolestCoder28-Feb-11 2:08 
QuestionFinal Year IEEE Projects in Cegonsoft malleshwaram Pin
hema govindaraju25-Feb-11 3:06
hema govindaraju25-Feb-11 3:06 
AnswerRe: Final Year IEEE Projects in Cegonsoft malleshwaram Pin
Richard MacCutchan25-Feb-11 3:13
mveRichard MacCutchan25-Feb-11 3:13 
AnswerRe: Final Year IEEE Projects in Cegonsoft malleshwaram Pin
fjdiewornncalwe25-Feb-11 4:54
professionalfjdiewornncalwe25-Feb-11 4:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.