none
Passage de paramètres de référence c# RRS feed

  • Question

  • Bonjour,

    j'ai un problème avec le passage de paramètre en référence.

    Mon objet :

    class MyIPadresse
    {
        public  String IP { set; get; }
    }

    Utils.cs:

    class Utils
    {
        public static void changeValue(ref String s)
        {
          if (s.Equals("not changed"))
           {
              s = "was changed";
           }
         }
    }

    Program.cs:

    MyIPadresse ip = new MyIPadresse();
    ip.IP= "not changed";
    Utils.changeValue(ref ip.IP);

    j'ai une erreur dans le paramètre de la méthode :

    Utils.changeValue(ref ip.IP);

    Merci.

    mercredi 24 juillet 2013 09:55

Réponses

  • Dans ce cas je vous propose d’utiliser la réflexion:

    using System.Reflection;
    .................................
    class Utils
    {
        public static object GetPropValue(object src, string propName)
        {
            return src.GetType().GetProperty(propName).GetValue(src, null);
        }
        public static void  SetPropValue(object src, string propName, string val )
        {
            PropertyInfo piInstance = typeof(MyIPadresse).GetProperty(propName);
             piInstance.SetValue(src, val, null);
        }
        public static bool DifferenceRpgUserAndSlsUser(MyIPadresse SlsValue, string RpgValue, String Property)
        {
            if ((SlsValue == null) || (RpgValue.ToLower() != GetPropValue(SlsValue, Property).ToString().ToLower()))
            {
                if (RpgValue != "")
                {
                  //  Utils.LogMsg(SlsValue + ": different de RPG :" + RpgValue);
                    SetPropValue(SlsValue, Property, RpgValue); 
                    //.IP = RpgValue;
                    return true;
                }
            }
            return false;
        }
    /*et dans l'application*/
         MyIPadresse ip = new MyIPadresse();
                ip.IP = "not changed";
               /// Utils.changeValue(ip );
                
                Utils.DifferenceRpgUserAndSlsUser(ip, "was changed", "IP");
                MessageBox.Show(ip.IP);

    DifferenceRpgUserAndSlsUser reçoit comme paramètre un objet de type MyIPadresse (vous devez changer avec le type du slsuser), le string à comparer et le nom de la propriété comme String.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse Zero0o mercredi 24 juillet 2013 11:55
    mercredi 24 juillet 2013 11:40

Toutes les réponses