TcpClient.cs
Code:
namespace TCP_Communication
{
	class TcpClient
	{
		// ...
		public delegate void OnDataAvailable(char[] data);
		// ...
	}
}
Program.cs
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace TCP_Communication
{
	class Program
	{
		static void Main(string[] args)
		{
			// ...
			Client.OnDataAvailable = DataArrived;
			// ...
		}
		public void DataArrived(char[] newdata)
		{
			// empty for now
		}
	}
}
Error:
'OnDataAvailable': cannot reference a type through an expression; try 'TCP_Communication.TcpClient.OnDataAvailable' instead

Yes, I tried 'TCP_Communication.TcpClient.OnDataAvailable' instead even though it is obviously wrong:

Program.cs
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace TCP_Communication
{
	class Program
	{
		static void Main(string[] args)
		{
			// ...
			TCP_Communication.TcpClient.OnDataAvailable = DataArrived;
			// ...
		}
		public void DataArrived(char[] newdata)
		{
			// empty for now
		}
	}
}
This time it gives this error message:
'TCP_Communication.TcpClient.OnDataAvailable' is a 'type', which is not valid in the given context
I read the article in MSDN about C# delegates, but still I can't find what I'm missing.

Please help me guys, how can I fix this code?