Benutzer mit den meisten Antworten
GetConstructor

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
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
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