I have to realize a serializazion/deserialization class and i'm using System.Xml.Serialization
. I have some IList<Decimal>
type properties and wanted to serialize in IList<string>
decoding all decimal value belonging to the list with a specific culture info. For example 10
is 10,00
with Italian culture info but 10.00
with English culture info.
I tried to do it using this:
public IList<string> method()
{
for (int i = 0; i < 1000; i++)
{
yield return i.ToString();
}
}
But i get at compile time Error 33
The body of 'Class1.method()' cannot be an iterator block because 'System.Collections.Generic.IList<string>' is not an iterator interface type
If i use as property type IEnumerable<string>
it works succesfully but obviusly i can't change the type of data i want to serialize .
Any help is appreciated.
yield
only works with IEnumerable<T>
, IEnumerable
, IEnumerator<T>
and IEnumerator
as return type.
In your case, you need to use a normal method instead:
public IList<string> method()
{
var result = new List<string>();
for (int i = 0; i < 1000; i++)
{
result.Add(i.ToString());
}
return result;
}
Think about it. Your code would allow you to write the following code:
method().Add("foo");
That doesn't make too much sense, does it?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With