c# - RegisterType results in an error -


hi trying set testing project in order pratis bit of unit testing while using unity ioc container , moq.

i seem getting error when try register type in unity.this code:

public static class setupmockobjects {     public static iproductrepository getproductrepository() {         mock<iproductrepository> productrepository = new mock<iproductrepository>();         productrepository.setup(m => m.products).returns(new list<product> {              new product { name = "football" , price = 25 },             new product { name = "surf board" , price = 179 },             new product { name = "running shoes" , price = 95 }         });          return productrepository.object;     } }  public static void initialise() {     var container = buildunitycontainer();     dependencyresolver.setresolver(new unitydependencyresolver(container)); }  private static iunitycontainer buildunitycontainer() {      var container = new unitycontainer();      container.registertype<iproductrepository , setupmockobjects.getproductrepository()>();      return container; } 

now creating mock object here because not want create data access layer figured easier create mock object.

the problem inside buildunitycontainer() method when try register type errors:

error   1   invalid expression term ','  error   2   ; expected   error   3   ; expected   error   4   invalid expression term ')'  error   5   ) expected   

i prety sure calling registertype right generic parameters thats why not understand why these errors thrown.where have made mistake?

you're trying use setupmockobjects.getproductrepository() type argument. that's not going work - type arguments have names of types (or type parameters). suspect meant use regular argument:

container.registerinstance<iproductrepository>(setupmockobjects.getproductrepository()); 

or perhaps more readably:

var repository = setupmockobjects.getproductrepository(); container.registerinstance<iproductrepository>(repository); 

or if type inference works (i don't have docs in front of me check declaration) use:

container.registerinstance(setupmockobjects.getproductrepository()); 

after all, return type of method same type argument want specify.

note i've changed call registertype registerinstance you're trying bind interface specific instance.


Comments

Popular posts from this blog

c# - Operator '==' incompatible with operand types 'Guid' and 'Guid' using DynamicExpression.ParseLambda<T, bool> -