Frågan#1 Hej,
Jag har en entityklass med en metod som returnerar en array av enumer.
Som exempel så här:
public class Entity
{
...
public CustomType[] GetCustomTypes()
{
return new CustomType[]{ foo, bar };
}
}
Nu skulle jag vilja kunna skriva så här:
Entity entity = new Entity();
Response.Write(entity.GetCustomTypes().ToString());
Och resultatet blir då kort och gott:
foo, bar
Alltså en kommaseparerad sträng.
Hur gör jag om jag vill overrida ToString() på detta sätt?
Du kan inte overridea en array av nåt. Du kan göra t.ex. en collection av det:
public class IntCollection : Collection<int>
{
public override string ToString()
{
return string.Join(",", this.Select(i => i.ToString()).ToArray());
}
}
Eller göra en extension metod:
public static class ArrayExtension
{
public static string ToCommaSeparatedString<T>(this T[] items)
{
return string.Join(",", items.Select(item => item.ToString()).ToArray());
}
}
En extension ser ju trevligt ut! :)