Selon MSDN, le {{ La méthode X0}} de la classe UnityContainer est utilisée comme suit:

var controller = container.Resolve<ManagementController>();

Cependant, je ne trouve pas cette méthode dans la définition de classe UnityContainer. Tout ce que je peux voir, c'est ceci:

public class UnityContainer : IUnityContainer, IDisposable
{
    // Other methods
    public object Resolve(Type t, string name, params ResolverOverride[] resolverOverrides);
    public IEnumerable<object> ResolveAll(Type t, params ResolverOverride[] resolverOverrides);
    // Other methods
}

Est-ce que j'utilise les mauvais packages ou quelque chose?

Voici le package que j'ai installé.

using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration; 
1
Luis Teijon 26 avril 2017 à 05:58

3 réponses

Meilleure réponse

IUnityContainer.Resolve<T>() est une méthode d'extension:

https://msdn.microsoft.com/en-us/library/microsoft.practices.unity.unitycontainerextensions(v=pandp.30).aspx

6
mageos 26 avril 2017 à 04:05

Dans Visual Studio, placez votre curseur sur la méthode Resolve<T>, puis appuyez sur F12 et il ira à: UnityContainerExtensions

C'est une méthode d'extension et le code est si vous en avez besoin.

2
CodingYoshi 26 avril 2017 à 04:11

C'est à l'intérieur de la classe UnityContainerExtensions. Comme @CodingYoshi l'a mentionné si vous faites un F12 ou allez à la définition, vous trouverez toute la classe.

Voici la classe.

using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;

    namespace Microsoft.Practices.Unity
    {
        //
        // Summary:
        //     Extension class that adds a set of convenience overloads to the Microsoft.Practices.Unity.IUnityContainer
        //     interface.
        public static class UnityContainerExtensions
        {
            //
        // Summary:
        //     Resolve an instance of the default requested type from the container.
        //
        // Parameters:
        //   container:
        //     Container to resolve from.
        //
        //   overrides:
        //     Any overrides for the resolve call.
        //
        // Type parameters:
        //   T:
        //     System.Type of object to get from the container.
        //
        // Returns:
        //     The retrieved object.
        public static T Resolve<T>(this IUnityContainer container, params ResolverOverride[] overrides);
        //
        // Summary:
        //     Resolve an instance of the requested type with the given name from the container.
        //
        // Parameters:
        //   container:
        //     Container to resolve from.
        //
        //   name:
        //     Name of the object to retrieve.
        //
        //   overrides:
        //     Any overrides for the resolve call.
        //
        // Type parameters:
        //   T:
        //     System.Type of object to get from the container.
        //
        // Returns:
        //     The retrieved object.
        public static T Resolve<T>(this IUnityContainer container, string name, params ResolverOverride[] overrides);
        //
        // Summary:
        //     Return instances of all registered types requested.
        //
        // Parameters:
        //   container:
        //     Container to resolve from.
        //
        //   resolverOverrides:
        //     Any overrides for the resolve calls.
        //
        // Type parameters:
        //   T:
        //     The type requested.
        //
        // Returns:
        //     Set of objects of type T.
        //
        // Remarks:
        //     This method is useful if you've registered multiple types with the same System.Type
        //     but different names.
        //     Be aware that this method does NOT return an instance for the default (unnamed)
        //     registration.


public static IEnumerable<T> ResolveAll<T>(this IUnityContainer container, params ResolverOverride[] resolverOverrides);


        }
    }
1
Simsons 26 avril 2017 à 04:31