Ich erhalte eine „Null-Referenz“ Ausnahme in der folgenden Zeile:Warum null Referenz Ausnahme in SetMolePublicInstance?
MoleRuntime.SetMolePublicInstance(stub, receiverType, objReceiver, name, null);
Das Programm baut und kompiliert korrekt. Es gibt keine Beschwerden über irgendwelche Parameter der Methode.
Hier ist die Spezifikation von SetMolePublicInstance, von dem Objekt-Browser:
SetMolePublicInstance(System.Delegate _stub, System.Type receiverType, object _receiver, string name, params System.Type[] parameterTypes)
Hier die Parameterwerte für "Locals" sind:
+ stub {Method = {System.String <StaticMethodUnitTestWithDeq>b__0()}} System.Func<string>
+ receiverType {Name = "OrigValue" FullName = "OrigValueP.OrigValue"} System.Type {System.RuntimeType}
objReceiver {OrigValueP.OrigValue} object {OrigValueP.OrigValue}
name "TestString" string
parameterTypes null object[]
Ich weiß, dass Teststring() keine Parameter und kehrt nimmt string, also als Starter, um Dinge zum Laufen zu bringen, habe ich für den letzten Parameter SetMolePublicInstance "null" angegeben. Wie bereits erwähnt, kompiliert dies OK.
Hier ist der Stack-Trace:
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.ExtendedReflection.Collections.Indexable.ConvertAllToArray[TInput,TOutput](TInput[] array, Converter`2 converter)
at Microsoft.Moles.Framework.Moles.MoleRuntime.SetMole(Delegate _stub, Type receiverType, Object _receiver, String name, MoleBindingFlags flags, Type[] parameterTypes)
at Microsoft.Moles.Framework.Moles.MoleRuntime.SetMolePublicInstance(Delegate _stub, Type receiverType, Object _receiver, String name, Type[] parameterTypes)
at DeqP.Deq.Replace[T](Func`1 stub, Type receiverType, Object objReceiver, String name) in C:\0VisProjects\DecP_04\DecP\DeqC.cs:line 38
at DeqPTest.DecCTest.StaticMethodUnitTestWithDeq() in C:\0VisProjects\DecP_04\DecPTest\DeqCTest.cs:line 28
at Starter.Start.Main(String[] args) in C:\0VisProjects\DecP_04\Starter\Starter.cs:line 14
Press any key to continue . . .
die Null-Parameter zu vermeiden, änderte es die letzten "null" bis "parameterTypes", wie in der folgenden Zeile:
MoleRuntime.SetMolePublicInstance(stub, receiverType, objReceiver, name, parameterTypes);
ich die Zeile eingefügt :
Type [] parameterTypes = new Type[0];
Mit moles.runner.exe die gewünschten Ergebnisse erzeugt :)
01.235.
Mike, würden Sie in Erwägung ziehen, die Wiederherstellung rückgängig zu machen http://stackoverflow.com/questions/10900775/why-does-xml-deserialize-data-to-lower-case? Es scheint mir, dass es eine vernünftige Frage war, die einige Zeit in Anspruch nahm, um Ihnen einen nützlichen Kommentar zu geben, eine nützliche Antwort. Wenn Sie dem zustimmen würden, wollten Sie dann die Informationen aus der Community mitnehmen? (Vergiss meine Anfrage, wenn diese Frage nur irgendwie völlig missverstanden wurde, eher als beantwortet.) –