Help! Problem mit .NET 4.0 und C# 4 mit IList

15/02/2010 - 21:30 von Carsten Posingies | Report spam
Hallo tutti,

Codeschniepel:

// BOF
using System.Collections.Generic;

namespace ConveyorDemo
{
class CLazyDumper : Conveyor, ConveyorOutput
{
public IList<dynamic> InBasket { get; set; }
public IList<dynamic> OutBasket { get; private set; }
public IList<dynamic> ErrorBasket { get; private set; }

public CLazyDumper()
{
InBasket = new List<dynamic>();
OutBasket = new List<dynamic>();
ErrorBasket = new List<dynamic>();
}

public void Filter() { /* ... */ }

public void Process()
{
foreach (var d in InBasket)
{
d.Dump();
OutBasket.Add(d);
}
}
}
}
// EOF

Bei

lazyDumper.Process();

schmeißt die Zeile (in Process())

OutBasket.Add(d);

folgende verstörende Exception:

RuntimeBinderException: System.Collections.Generic.IList<dynamic> does
not contain a definition for 'Add'

Ähm... wie bidde???

Danke wie immer schon vorab,

Carsten
 

Lesen sie die antworten

#1 Frank Dzaebel
15/02/2010 - 22:16 | Warnen spam
Hallo Carsten,

Bei lazyDumper.Process();
schmeißt die Zeile (in Process())
OutBasket.Add(d);
folgende verstörende Exception:
RuntimeBinderException: System.Collections.Generic.IList<dynamic> does
not contain a definition for 'Add'
Ähm... wie bidde???



Also so ganz vollstàndig ist Dein Quellcode
ja IMHO nicht. Da würde ja noch ein:

InBasket.Add(new Basket()); // im ctor

o.à. zuzufügen sein, damit die foreach Schleife
nicht sofort break'ed.
Und Basket müsste eine Methode Dump() haben.
Wenn sie das hàtte, würde der Fehler schliesslich
wirklich so kommen.
Dann könntest Du das Add aber ggf.
durch Cast in object aufrufen:

OutBasket.Add((object)d);

d ist (dann) ja ein Basket-Typ zur Laufzeit.

[Using Type dynamic (C# Programming Guide)]
http://msdn.microsoft.com/en-us/library/dd264736(VS.100).aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen