none
GetConstructor RRS feed

  • Frage

  • Im Folgenden das Original Microsoft Codebeispiel zu GetConstructor. Dies liefert bei mir im Debugger eine Fehlermeldung: "System.NullReferenceException". Trotz Recherche im Internet ist es mir noch nicht gelungen, eine funktionsfähige Version zu finden. Wer kann mir weiterhelfen?

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;

    namespace Invoke_Methode2
    {
        public class MagicClass
        {
            private int magicBaseValue;

            public MagicClass()
            {
                magicBaseValue = 9;
            }

            public int ItsMagic(int preMagic)
            {
                return preMagic * magicBaseValue;
            }
        }

        public class Program
        {
            public static void Main(string[] args)
            {
                // Get the constructor and create an instance of MagicClass

                Type magicType = Type.GetType("MagicClass");
                ConstructorInfo magicConstructor = magicType.GetConstructor(Type.EmptyTypes);//Fehler: System.NullReferenceException
                object magicClassObject = magicConstructor.Invoke(new object[] { });

                // Get the ItsMagic method and invoke with a parameter value of 100

                MethodInfo magicMethod = magicType.GetMethod("ItsMagic");
                object magicValue = magicMethod.Invoke(magicClassObject, new object[] { 100 });

                Console.WriteLine("MethodInfo.Invoke() Example\n");
                Console.WriteLine("MagicClass.ItsMagic() returned: {0}", magicValue);

            }
        }
    }

    // The example program gives the following output:
    //
    // MethodInfo.Invoke() Example
    //
    // MagicClass.ItsMagic() returned: 900


    isidor2706

    Montag, 10. April 2017 17:10

Antworten

  • Hallo,
    Du hast es fast korrekt übernommen. Aus meiner Sicht ist dein Namespace im Weg.
    Das Original hat keinen Namespace: https://msdn.microsoft.com/de-de/library/a89hcwhh(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
    Entferne den Namespace:
    namespace Invoke_Methode2
    {
    und das letzte schließende}
    Oder: Ergänze den von Dir hinzugefügten Namespace an folgender Stelle:

     Type magicType = Type.GetType("Invoke_Methode2.MagicClass");

    HTH

    Grüße Alexander


    • Bearbeitet alexander65 Montag, 10. April 2017 17:55
    • Als Antwort markiert isidor2706 Montag, 10. April 2017 18:54
    Montag, 10. April 2017 17:31

Alle Antworten

  • Hallo,
    Du hast es fast korrekt übernommen. Aus meiner Sicht ist dein Namespace im Weg.
    Das Original hat keinen Namespace: https://msdn.microsoft.com/de-de/library/a89hcwhh(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
    Entferne den Namespace:
    namespace Invoke_Methode2
    {
    und das letzte schließende}
    Oder: Ergänze den von Dir hinzugefügten Namespace an folgender Stelle:

     Type magicType = Type.GetType("Invoke_Methode2.MagicClass");

    HTH

    Grüße Alexander


    • Bearbeitet alexander65 Montag, 10. April 2017 17:55
    • Als Antwort markiert isidor2706 Montag, 10. April 2017 18:54
    Montag, 10. April 2017 17:31
  • Es lag tatsächlich am Namespace, jetzt funktioniert es. Besten Dank!

    isidor2706

    Montag, 10. April 2017 18:55