IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Types dynamiques : Passer le type a une autre methode


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut Types dynamiques : Passer le type a une autre methode
    Bonjour,

    Alors voilà j'ai écrit une API pour synchroniser notre ERP avec Mgento pour ceux qui connaissent.
    Tout fonctionnait bien jusqu’à hier ou j'ai reçu un message étrange dans mon appli et ça a fait complètement partir en sucette le serveur.

    J'essai donc de développer un système de log des envoi et des réponses.

    Actuellement mes appelles se font comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IRestResponse<Product> oResponse = (IRestResponse<Product>)oClient.Execute<Product>(oRequest);
    Je souaiterait remplacer la methode Execute par une methode interne développée par moi.
    J'ai donc essayer d'écrire une methode que j'appellerais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Execute<Product>(oRequest);
    qui exécuterais le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private object Execute<T>(RestRequest _oRequest) 
    {
            return oClient.Execute<T>(_oRequest);
    }
    Malheureusement le compilateur dit :
    Error 2 'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'RestSharp.RestClient.Execute<T>(RestSharp.IRestRequest)'
    Qqun a-t-il une idée ?

    Merci, a bientôt.


    Edit :

    Alors pour ce que ça intéresse la syntaxe suivante fait le boulo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private IRestResponse<T> Execute<T>(RestRequest _oRequest) where T : new()
            {
                    IRestResponse<T> oResponse = oClient.Execute<T>(_oRequest);
                    return oResponse;
            }

  2. #2
    Invité
    Invité(e)
    Par défaut
    il faut que les instances gérées soient des classes fournissant le paramètre générique T ne soit pas abstract et possède un constructeur public sans paramètres pour remplir la condition new(), donc il doit manquer cette définition quelque part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public TheClass()
    {
    }
    Dernière modification par DotNetMatt ; 20/09/2015 à 19h21. Motif: Pensez aux balises [CODE] et [/CODE] (bouton #)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2015, 17h49
  2. Passer des variables a une autre page
    Par Bydouille dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/10/2007, 22h59
  3. [VB.NET] Passer la main a une autre app
    Par b_lob dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/10/2006, 12h18
  4. [Turing] Faire passer un algo dans une autre forme
    Par Andariel dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 22/05/2006, 18h06
  5. passer des données a une autre page php
    Par questionneuse dans le forum Langage
    Réponses: 10
    Dernier message: 25/01/2006, 00h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo