Click here to Skip to main content
15,884,298 members
Articles / Programming Languages / C# 4.0

Switch and Providers

Rate me:
Please Sign up or sign in to vote.
4.58/5 (9 votes)
30 Jul 2009CPOL6 min read 24.3K   413   26  
An architectural pattern for communications based on Publish/Subscribe messaging and extended for custom Providers.
using System;


namespace Switch.Rules
{
	///////////////////////////////////////////////////////////////////////////
	//
	//	IsTypeRule class
	//
	/// <summary>
	/// This rule provides a test which passes for messages of a specified 
	/// type.
	/// </summary>
	public class IsTypeRule : Rule
	{
		private readonly Type _type;
		private readonly int _hashcode;

		public IsTypeRule(Type type)
		{
			_type = type;
			_hashcode = string.Format("{0}({1})", typeof(IsTypeRule), _type).GetHashCode();
		}

		public override bool Test(Message message)
		{
			return _type.IsInstanceOfType(message);
		}

		public override bool Equals(object obj)
		{
			IsTypeRule rule = obj as IsTypeRule;
			return rule != null && rule._type == _type;
		}

		public override int GetHashCode()
		{
			return _hashcode;
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect Medseek
United States United States
Hello, I'm Fred. I've been working with software since I was a kid, and the foreseeable future looks to hold more of the same.

When I was in 4th grade, I had a homework assignment where I was supposed to write out a list of prime numbers less than 100. Instead of writing it out by hand, I spent a couple of minutes writing a simple C program, and turned in a list of prime numbers less than 1,000,000.

Since then, I have enjoyed wasting countless hours (years) playing with various technologies, patterns, and code constructs, and occasionally learn something useful.

Comments and Discussions