<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>EventGeneric</Title>
			<Description>Creates a C# style event field construct and methods for an event with parameters, for classes NOT derived from ASP.NET System.Control</Description>
			<Author>Alan McBee</Author>
			<Shortcut>eventg</Shortcut>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Declarations>
				<Literal>
					<ID>event</ID>
					<Default>Event</Default>
				</Literal>
				<Literal>
					<ID>arg</ID>
					<Default>parameter</Default>
				</Literal>
				<Object>
					<ID>argType</ID>
					<Default>object</Default>
					<Type>System.Type</Type>
				</Object>
			</Declarations>
			<Code Language="CSharp">
				<![CDATA[
#region $event$ Event
public class $event$EventArgs : EventArgs
{
	public $event$EventArgs($argType$ $arg$)
	{
		_$arg$ = $arg$;
	}

	private $argType$ _$arg$;
	public $argType$ $arg$
	{
		get { return _$arg$; }
		set { _$arg$ = value; }
	}
}

public event EventHandler<$event$EventArgs> $event$;

protected virtual void On$event$($event$EventArgs e)
{
	EventHandler<$event$EventArgs> $event$Handler = $event$;
	if (null != $event$Handler)
	{
		$event$Handler(this, e);
	}
}

protected virtual void On$event$($argType$ $arg$)
{
  $event$EventArgs e = new $event$EventArgs($arg$);
	EventHandler<$event$EventArgs> $event$Handler = $event$;
	if (null != $event$Handler)
	{
		$event$Handler(this, e);
	}
}

#endregion
]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>