How to register/resolve a type with one generic constructor parameter

Legends

I tried a lot of approches, but no luck. How can I resolve the IWindowService?

This is what I have:

var c = new UnityContainer();
c.RegisterType<IvmMain, vmMain>("mvm");
c.RegisterType<IWindow, MainWindow>("mw");
c.RegisterType(typeof(IWindowService<IvmMain>), typeof(WindowService<vmMain>),"win",
                new InjectionConstructor(new ResolvedParameter<IWindow>("mw")),
                new InjectionConstructor(new ResolvedParameter<IvmMain>("mvm")));

The implementation of the window service:

public class WindowService<TViewModel> : IWindowService<TViewModel>
{
    readonly Window _win;
    TViewModel _vm;
    public WindowService(IWindow win, TViewModel vm)
    {
        _vm = vm;
        _win = win as Window;
        _win.DataContext = vm;
    }

Error: The type WindowService does not have a constructor that takes the parameters (IWindow).

smoksnes

Here's a working example. In the scenario you have provided there's no reason for the named registrations, so I removed them. But I'm sure you can get it to work with them if you really want.

The key is to register IWindowService with:

container.RegisterType(typeof (IWindowService<>), typeof (WindowService<>))

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Registering dependencies ...");

        var container = new UnityContainer();
        container.RegisterType(typeof (IWindowService<>), typeof (WindowService<>));

        container.RegisterType<IWindow, Window>();
        container.RegisterType<IvmMain, ViewModel>(); // Or possibly RegisterInstance ?

        var foo = container.Resolve<IWindowService<IvmMain>>();

        Console.ReadKey();
    }
}

public interface IWindowService<T>
{
}

public interface IWindow
{
}

public interface IvmMain 
{
}

public class ViewModel : IvmMain
{ 
} 

public class Window : IWindow 
{ 
}

public class WindowService<TViewModel> : IWindowService<TViewModel>
{
    public WindowService(IWindow win, TViewModel vm)
    {

    }
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Generic type as a constructor parameter

How to work with generic type array and generic type class as parameter in constructor?

How to pass a type parameter to a generic class constructor reference?

How to define a parameter of type generic list with constructor constraint?

Call constructor of type parameter in generic class

"Expected type parameter" error in the constructor of a generic struct

Enforce type of generic dependent on constructor parameter

How to use only one type parameter to define a generic function in Rust

How to use constructor of Generic type

How to call a constructor with an ambiguous generic parameter?

How to create an instance of generic type whose constructor requires a delegate function parameter?

How does java determine, which overloaded method will call, when one method with generic type parameter and other with non generic parameter?

How to make a Type-constructor part of the Functor typeclass if it has more than one Type-parameter?

How to cast numeric type into generic type parameter?

How to pass a generic type object to a class constructor

Infer generic class type parameters from single constructor parameter

Create instance of generic type whose constructor requires a parameter?

Generic inner class constructor accepts different type parameter what is set?

Simple Injector: Registering open generic type with constructor parameter

Generic as parameter to constructor

Impose more than one generic type constraint on a Scala type parameter

Type[] for GetMethod to get generic method with two arguments and one type parameter

How to state one trait is the equivalent of another generic trait for a given type parameter?

Generic constructor for generic type in Rust

Calling constructor of generic type?

Calling constructor of a generic type

How to enforce a type constructor parameter for GHCI

How to pass a Class constructor or Type as a parameter

How does the EnumConverter Constructor get the Type Parameter

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive