blob: d4b31fb84ca9c530a7273b682ebc171cd067e070 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
using System;
using System.Collections.Specialized;
namespace Marina.Presentation
{
public class PayloadKey< T > : IEquatable< PayloadKey< T > >
{
private readonly string _key;
public PayloadKey( string key )
{
_key = key;
}
public T ParseFrom( NameValueCollection payload )
{
EnsureKeyIsInPayload( payload );
return ( T )Convert.ChangeType( payload[ _key ], typeof( T ) );
}
private void EnsureKeyIsInPayload( NameValueCollection payload )
{
if( null == payload[ _key ] ) {
throw new PayloadKeyNotFoundException( _key );
}
}
public static implicit operator string( PayloadKey< T > item )
{
return item._key;
}
public bool Equals( PayloadKey< T > payloadKey )
{
return payloadKey != null && Equals( _key, payloadKey._key );
}
public override bool Equals( object obj )
{
return ReferenceEquals( this, obj ) || Equals( obj as PayloadKey< T > );
}
public override int GetHashCode( )
{
return _key.GetHashCode( );
}
}
}
|