---
title: "Collection av Color"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/102563-collection-av-color"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Nexus86"
published: "2004-04-28T11:30:35.000Z"
updated: "2004-04-28T15:54:09.000Z"
replies: 5
views: 245
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/102563-collection-av-color"
---

# Collection av Color

## #1 — Nexus86, 2004-04-28T11:30Z

Jag försöker göra en Collection av Color-objekt men lyckas inget vidare. Jag har koden nedanför vilken jag personligen tycker ser rätt ut men när jag försöker lägga till ett värde i den så får jag ett felmeddelande ifrån OnValidate om att value är av fel typ vilket jag vet till 100% att det inte är eftersom jag försökte med det här:

```
ColorCollection cCol = new ColorCollection();
cCol.Add(Color.Black);
```

Har även provat att lägga till en MessageBox i OnValidate för att kolla vad jag får:

```
protected override void OnValidate(Object value)
{
[b]	MessageBox.Show(value.GetType().ToString()); // Ger System.Drawing.Color
	MessageBox.Show((Type.GetType("System.Drawing.Color") == null).ToString()); // Ger true[/b]
	if (value.GetType() != Type.GetType("System.Drawing.Color"))
		throw new ArgumentException("value must be of type System.Drawing.Color.");
}
```

Vad kan felet vara?

```
	public class ColorCollection : CollectionBase
	{
		public System.Drawing.Color this[int index]
		{
			get
			{
				return ( (System.Drawing.Color) List[index]);
			}
			set
			{
				List[index] = value;
			}
		}
		
		public int Add(System.Drawing.Color value)
		{
			return (List.Add(value));
		}
		
		public int IndexOf(System.Drawing.Color value)
		{
			return (List.IndexOf(value));
		}
		
		public void Insert(int index, System.Drawing.Color value)
		{
			List.Insert(index, value);
		}
		
		public void Remove(System.Drawing.Color value)
		{
			List.Remove(value);
		}
		
		public bool Contains(System.Drawing.Color value)
		{
			return (List.Contains(value));
		}
		
		protected override void OnInsert(int index, Object value)
		{
			if (value.GetType() != Type.GetType("System.Drawing.Color"))
				throw new ArgumentException("value must be of type System.Drawing.Color.", "value");
		}
		
		protected override void OnRemove(int index, Object value)
		{
			if (value.GetType() != Type.GetType("System.Drawing.Color"))
				throw new ArgumentException("value must be of type System.Drawing.Color.", "value");
		}
		
		protected override void OnSet(int index, Object oldValue, Object newValue)
		{
			if (newValue.GetType() != Type.GetType("System.Drawing.Color"))
				throw new ArgumentException("newValue must be of type System.Drawing.Color.", "newValue");
		}
		
		protected override void OnValidate(Object value)
		{
			if (value.GetType() != Type.GetType("System.Drawing.Color"))
				throw new ArgumentException("value must be of type System.Drawing.Color.");
		}
	}
```

Permalänk: https://www.webforum.nu/p/102563

## #2 — PDahlen, 2004-04-28T12:55Z

Du skriver att

```
MessageBox.Show(value.GetType().ToString()); // Ger System.Drawing.Color

MessageBox.Show((Type.GetType("System.Drawing.Color") == null).ToString()); // Ger true
```

Men vad ger Type.GetType("System.Drawing.Color") för värde?

Kan du inte använda

```
 if (value.GetType()  is System.Drawing.Color)
```

För att kolla att det är rätt datatyp.

Permalänk: https://www.webforum.nu/p/1334918

## #3 — Nexus86, 2004-04-28T14:36Z

Hmm. Kanske jag kan. Är rätt ny på .NET så jag vet inte men det stog att man kunde göra som jag skrev i manualen. Men kan testa iaf. :)

Permalänk: https://www.webforum.nu/p/1334994

## #4 — Nexus86, 2004-04-28T15:10Z

> **PDahlen skrev:**
>
> Du skriver att
>
>
> ```
> MessageBox.Show(value.GetType().ToString()); // Ger System.Drawing.Color
> 
> MessageBox.Show((Type.GetType("System.Drawing.Color") == null).ToString()); // Ger true
> ```
>
> 
> Men vad ger Type.GetType("System.Drawing.Color") för värde?
> 
> Kan du inte använda
>
>
> ```
>  if (value.GetType()  is System.Drawing.Color)
> ```
>
> 
> För att kolla att det är rätt datatyp.

Det fungerade inte. Först får jag en varning (warning CS0184: Angivet uttryck får aldrig typen (System.Drawing.Color)) sen blir det förbjuden åtgärd när jag kör programmet.

Men enligt min MessageBox så ger ju Type.GetType("System.Drawing.Color") värdet null. D.v.s ingenting. Något annat sätt jag kan lösa detta på?

Permalänk: https://www.webforum.nu/p/1335008

## #5 — PDahlen, 2004-04-28T15:52Z

Ok, men jag förstår inte riktigt vad du tror att du ska uppnå med 

```
 if (value.GetType() != Type.GetType("System.Drawing.Color"))
```

Om Type.GetType("SystemDrawing.Color") är null så gör du alltså en koll om value.GetType är null eller inte.
Jag ser inte riktigt logiken.

Det här borde vara mer rätt i så fall

```
 if ( !(value.GetType("System.Drawing.Color")) )

eller

 if ( !(value.GetType().ToString == "System.Drawing.Color") )
```

Permalänk: https://www.webforum.nu/p/1335038

## #6 — Nexus86, 2004-04-28T15:54Z

Jo i och för sig! Så mycket kan man alltså lita på manualen. :l

Tackar!

I och för sig gällde det en annan typ men iaf. :p

Permalänk: https://www.webforum.nu/p/1335041

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/102563-collection-av-color
