public static Guid? GuidValue( this JValue value )
{
if ( value == null || value.Type == JTokenType.Null )
return null;
if ( value.Type == JTokenType.Guid )
return value.Value<Guid>();
else if ( value.Type == JTokenType.String )
return Guid.Parse( value.Value<string>() );
else
throw new InvalidCastException();
}