webForumDet fria alternativet

override av ToString()

.NETur .NET

2 svar · 619 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
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?

Medlem sedan maj 200010 687 inlägg
#2

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());
		}
	}
Medlem sedan juni 20003 076 inlägg
#3

En extension ser ju trevligt ut! :)

140 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)