none
probleme avec mon controleur RRS feed

  • Question

  • Bonjour j'ai le message d'erreur suivant

     

    Accessibilité incohérente : le type de paramètre 'ContactManager.Models.IContactManagerService' est moins accessible que la méthode 'ContactManager.Controllers.HomeController.HomeController(ContactManager.Models.IContactManagerService)'

    L'erreur se situe à la 8iéme du code.Merci bien

    <strong> public class HomeController : Controller
        {
            private IContactManagerService _service;
    
            public HomeController()
            {
                _service = new ContactManagerService(new ModelStateWrapper(this.ModelState));
    
            }
    
           public HomeController(IContactManagerService service)
            {
                _service = service;
            }</strong>
    

     

     

    vendredi 2 décembre 2011 10:39

Réponses

  • Bonjour,

    Il s'agit visiblement d'une erreur de compilation.

    L'interface ContactManager.Models.IContactManagerService doit être public vue qu'elle constitue le type d'un paramètre du constructeur public HomeController de la classe HomeController.

    La régle à retenir est que tout type intevenant dans la signature d'une méthode doit être d'une accessibilité supérieur ou égale de celle de la méthode, voici les modificateurs d'accessibilité d'une classe dans l'ordre de plus haut vers le plus bas :

    1. public
    2. protected internal
    3. internal
    4. protected
    5. private
    Pour plus d'information : http://msdn.microsoft.com/fr-fr/library/ms173121.aspx

     

    Cordialement.



    vendredi 2 décembre 2011 11:10
    Auteur de réponse
  • Bonjour,

    Voir la déclaration du type IContactManagerService. Le message indique que la type du paramètre passé à cette méthode est moins accessible que la méthode.

    En clair, la méthode est par exemple publique alors que le type qu'on lui passe est plus restrictif (internal ou private par exemple) ce qui est donc incohérent (la méthode peut être appelée d'un autre assembly mais le type de paramètre à lui passer ne l'est pas)...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 2 décembre 2011 11:06
    Modérateur

Toutes les réponses

  • Bonjour,

    Voir la déclaration du type IContactManagerService. Le message indique que la type du paramètre passé à cette méthode est moins accessible que la méthode.

    En clair, la méthode est par exemple publique alors que le type qu'on lui passe est plus restrictif (internal ou private par exemple) ce qui est donc incohérent (la méthode peut être appelée d'un autre assembly mais le type de paramètre à lui passer ne l'est pas)...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 2 décembre 2011 11:06
    Modérateur
  • Bonjour,

    Il s'agit visiblement d'une erreur de compilation.

    L'interface ContactManager.Models.IContactManagerService doit être public vue qu'elle constitue le type d'un paramètre du constructeur public HomeController de la classe HomeController.

    La régle à retenir est que tout type intevenant dans la signature d'une méthode doit être d'une accessibilité supérieur ou égale de celle de la méthode, voici les modificateurs d'accessibilité d'une classe dans l'ordre de plus haut vers le plus bas :

    1. public
    2. protected internal
    3. internal
    4. protected
    5. private
    Pour plus d'information : http://msdn.microsoft.com/fr-fr/library/ms173121.aspx

     

    Cordialement.



    vendredi 2 décembre 2011 11:10
    Auteur de réponse
  • Ok merci beaucoup.Je n'avais pas mis le type au niveau de mes interfaces.

    Merci

    lundi 5 décembre 2011 09:12