patterncsharpMinor
Defaulting dependencies
Viewed 0 times
dependenciesdefaultingstackoverflow
Problem
What are some advantages and disadvantages of providing default implementations for dependencies. I have chosen to do this because it allows the objects to be easily used in the application but also allows me to mock for unit testing.
public class RoleProvider : RoleProviderBase
{
private IRoleDataProvider _roleDataProvider;
private IEntitlementsDataProvider EntitlementsDataProvider
{
get
{
if (_roleDataProvider == null)
{
_roleDataProvider = new RoleDataProvider();
}
return _roleDataProvider;
}
}
public RoleProvider(IRoleDataProvider roleDataProvider)
{
_roleDataProvider = roleDataProvider;
}
public RoleProvider()
{
}
}Solution
I personally don't see any problem with this (maybe someone else might provide better insight) but in this situation I do tend to do it differently but instantiating it via constructor overloading and making the private field readonly.
e.g.
Perhaps this question might be better asked on PE as well?
e.g.
public class RoleProvider : RoleProviderBase
{
private readonly IRoleDataProvider _roleDataProvider;
public RoleProvider()
: this(new RoleDataProvider())
{
}
public RoleProvider(IRoleDataProvider roleDataProvider)
{
_roleDataProvider = roleDataProvider;
}
}Perhaps this question might be better asked on PE as well?
Code Snippets
public class RoleProvider : RoleProviderBase
{
private readonly IRoleDataProvider _roleDataProvider;
public RoleProvider()
: this(new RoleDataProvider())
{
}
public RoleProvider(IRoleDataProvider roleDataProvider)
{
_roleDataProvider = roleDataProvider;
}
}Context
StackExchange Code Review Q#13099, answer score: 5
Revisions (0)
No revisions yet.