2011-01-04 4 views
0

Ich refaktoriert einige Code, und jetzt bekomme ich diesen Fehler beim Aufruf einer Funktion. Aber alles scheint in Ordnung, ich habe sogar failing_argument.GetType().AssemblyQualifiedName zwischen dem alten und dem neuen Code verglichen und sie sind gleich. Irgendwelche Ideen, was könnte falsch sein?Warum bekomme ich diesen .NET-Fehler - "TypeError: erwartete Liste [DataPoint], bekam List [DataPoint]"

Der Aufruf der Funktion ist in IronPython-Code, die Funktion ist in C# -Code (eine Assembly, die während dieses Refactoring nicht geändert wurde).

Welche Art von Sache könnte diesen Fehler erzeugen?

EDIT: Vollironpython Zurückverfolgungs:

Traceback (most recent call last): 
    File "D:\Work\Framework\python\ide\tab_manager.py", line 57, in add_chart_tab 
    chart_tab = ChartTab(self.__main_window, self, tab_item, name, chart_descriptor) 
    File "D:\Work\Framework\python\ide\chart_tab.py", line 64, in __init__ 
    self.__chart = Chart(self, self.__gui_cfg, self.__base_cfg, self.__chart_descriptor, self.__scroll_bar) 
    File "D:\Work\Framework\python\ide\chart.py", line 57, in __init__ 
    self.update_topology(empty=False) 
    File "D:\Work\Framework\python\ide\chart.py", line 93, in update_topology 
    self.update_config() 
    File "D:\Work\Framework\python\ide\chart.py", line 111, in update_config 
    self.__global.chart_view = ChartView(self.__global) 
    File "D:\Work\Framework\python\ide\chart_view.py", line 33, in __init__ 
    self.__spans = SpanUtil.compute_spans(time_series, gap_threshold) 
TypeError: expected List[DataPoint], got List[DataPoint] 
+0

Es wäre fairer, diese Frage zu beantworten, wenn Sie den Code posten, wäre sogar der genaue Fehler groß. –

+0

Sind Sie sicher, dass die Fehlermeldung richtig ist? Vielleicht sagt es "IList" statt "List" für einen der Params, vielleicht? –

+0

Ich habe die vollständige Traceback-Ausnahme hinzugefügt. Es ist kompliziert, etwas Code zu extrahieren und hier zu posten - es umfasst sowohl IronPython als auch C#, und ich bin mir nicht sicher, ob ich das sogar in einem kleinen Stück Code reproduzieren kann, da der Fehler in der Tat seltsam ist – Meh

Antwort

2

Nach weiteren Debuggen konnte ich aus dem Code eine andere Fehlermeldung erhalten: Unable to cast object of type 'List[DataPoint]' to 'List[DataPoint]'

für diese Suche ergab ein paar Artikel Erläuterung des Problems:
http://www.infinitec.de/post/2008/05/InvalidCastException-Unable-to-cast-object-of-Type-X-to-X.aspx
http://geekswithblogs.net/rupreet/archive/2010/02/16/137988.aspx

Es stellt sich heraus dass die Assembly, die DataPoint enthält (von List[DataPoint]), wird es zweimal in meiner Anwendung von zwei verschiedenen Standorten geladen. Die Ursache in meinem Fall ist, dass Visual Studio beim Erstellen einer Assembly alle anderen referenzierten Assemblies neben dem neu erstellten Assembly im Ordner bin kopiert. Aber ich lade auch dynamisch eine der referenzierten Assemblies von ihrem ursprünglichen Build-Ort.

+0

Ich möchte nur darauf hinweisen, dass ich das gleiche Problem hatte. Zum Beispiel hatte ich in meinem Projekt einen Verweis auf "C: \\ Something \\ Something \\ MyDLL.dll" ', und in IronPython lud ich" C: /Something/Something/MyDLL.dll "' ', Dadurch wird die gleiche DLL zweimal geladen. Es ** wird ** Probleme verursachen, wenn sie nicht übereinstimmen, auch wenn der Pfad im Wesentlichen der gleiche ist! –

0

kann ein Problem mit der Art Auflösung sein ... verwenden Sie den vollständigen Typnamen (einschließlich des Namespace). Einige Codebeispiele könnten helfen!

Verwandte Themen