Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
5b5fafcc
Commit
5b5fafcc
authored
Oct 12, 2017
by
Savorboard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add helper method.
parent
8e107693
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
117 additions
and
102 deletions
+117
-102
Helper.cs
src/DotNetCore.CAP/Infrastructure/Helper.cs
+117
-102
No files found.
src/DotNetCore.CAP/Infrastructure/Helper.cs
View file @
5b5fafcc
...
...
@@ -7,106 +7,121 @@ using Newtonsoft.Json.Linq;
namespace
DotNetCore.CAP.Infrastructure
{
public
static
class
Helper
{
private
static
readonly
DateTime
Epoch
=
new
DateTime
(
1970
,
1
,
1
,
0
,
0
,
0
,
DateTimeKind
.
Local
);
private
static
JsonSerializerSettings
_serializerSettings
;
public
static
void
SetSerializerSettings
(
JsonSerializerSettings
setting
)
{
_serializerSettings
=
setting
;
}
public
static
string
ToJson
(
object
value
)
{
return
value
!=
null
?
JsonConvert
.
SerializeObject
(
value
,
_serializerSettings
)
:
null
;
}
public
static
T
FromJson
<
T
>(
string
value
)
{
return
value
!=
null
?
JsonConvert
.
DeserializeObject
<
T
>(
value
,
_serializerSettings
)
:
default
(
T
);
}
public
static
object
FromJson
(
string
value
,
Type
type
)
{
if
(
type
==
null
)
throw
new
ArgumentNullException
(
nameof
(
type
));
return
value
!=
null
?
JsonConvert
.
DeserializeObject
(
value
,
type
,
_serializerSettings
)
:
null
;
}
public
static
long
ToTimestamp
(
DateTime
value
)
{
var
elapsedTime
=
value
-
Epoch
;
return
(
long
)
elapsedTime
.
TotalSeconds
;
}
public
static
DateTime
FromTimestamp
(
long
value
)
{
// ReSharper disable once ImpureMethodCallOnReadonlyValueField
return
Epoch
.
AddSeconds
(
value
);
}
public
static
bool
IsController
(
TypeInfo
typeInfo
)
{
if
(!
typeInfo
.
IsClass
)
return
false
;
if
(
typeInfo
.
IsAbstract
)
return
false
;
if
(!
typeInfo
.
IsPublic
)
return
false
;
return
!
typeInfo
.
ContainsGenericParameters
&&
typeInfo
.
Name
.
EndsWith
(
"Controller"
,
StringComparison
.
OrdinalIgnoreCase
);
}
public
static
bool
IsComplexType
(
Type
type
)
{
return
!
CanConvertFromString
(
type
);
}
public
static
string
AddJsonProperty
(
string
json
,
IList
<
KeyValuePair
<
string
,
string
>>
properties
)
{
var
jObj
=
JObject
.
Parse
(
json
);
foreach
(
var
property
in
properties
)
{
if
(
jObj
.
TryGetValue
(
property
.
Key
,
out
var
_
))
{
jObj
[
property
.
Key
]
=
property
.
Value
;
}
else
{
jObj
.
Add
(
new
JProperty
(
property
.
Key
,
property
.
Value
));
}
}
return
jObj
.
ToString
();
}
private
static
bool
CanConvertFromString
(
Type
destinationType
)
{
destinationType
=
Nullable
.
GetUnderlyingType
(
destinationType
)
??
destinationType
;
return
IsSimpleType
(
destinationType
)
||
TypeDescriptor
.
GetConverter
(
destinationType
).
CanConvertFrom
(
typeof
(
string
));
}
private
static
bool
IsSimpleType
(
Type
type
)
{
return
type
.
GetTypeInfo
().
IsPrimitive
||
type
==
typeof
(
decimal
)
||
type
==
typeof
(
string
)
||
type
==
typeof
(
DateTime
)
||
type
==
typeof
(
Guid
)
||
type
==
typeof
(
DateTimeOffset
)
||
type
==
typeof
(
TimeSpan
)
||
type
==
typeof
(
Uri
);
}
}
public
static
class
Helper
{
private
static
readonly
DateTime
Epoch
=
new
DateTime
(
1970
,
1
,
1
,
0
,
0
,
0
,
DateTimeKind
.
Local
);
private
static
JsonSerializerSettings
_serializerSettings
;
public
static
void
SetSerializerSettings
(
JsonSerializerSettings
setting
)
{
_serializerSettings
=
setting
;
}
public
static
string
ToJson
(
object
value
)
{
return
value
!=
null
?
JsonConvert
.
SerializeObject
(
value
,
_serializerSettings
)
:
null
;
}
public
static
T
FromJson
<
T
>(
string
value
)
{
return
value
!=
null
?
JsonConvert
.
DeserializeObject
<
T
>(
value
,
_serializerSettings
)
:
default
(
T
);
}
public
static
object
FromJson
(
string
value
,
Type
type
)
{
if
(
type
==
null
)
throw
new
ArgumentNullException
(
nameof
(
type
));
return
value
!=
null
?
JsonConvert
.
DeserializeObject
(
value
,
type
,
_serializerSettings
)
:
null
;
}
public
static
long
ToTimestamp
(
DateTime
value
)
{
var
elapsedTime
=
value
-
Epoch
;
return
(
long
)
elapsedTime
.
TotalSeconds
;
}
public
static
DateTime
FromTimestamp
(
long
value
)
{
// ReSharper disable once ImpureMethodCallOnReadonlyValueField
return
Epoch
.
AddSeconds
(
value
);
}
public
static
bool
IsController
(
TypeInfo
typeInfo
)
{
if
(!
typeInfo
.
IsClass
)
return
false
;
if
(
typeInfo
.
IsAbstract
)
return
false
;
if
(!
typeInfo
.
IsPublic
)
return
false
;
return
!
typeInfo
.
ContainsGenericParameters
&&
typeInfo
.
Name
.
EndsWith
(
"Controller"
,
StringComparison
.
OrdinalIgnoreCase
);
}
public
static
bool
IsComplexType
(
Type
type
)
{
return
!
CanConvertFromString
(
type
);
}
public
static
JObject
ToJObject
(
Exception
exception
)
{
return
new
JObject
(
new
{
Source
=
exception
.
Source
,
Message
=
exception
.
Message
,
InnerMessage
=
exception
.
InnerException
?.
Message
});
}
public
static
string
AddJsonProperty
(
string
json
,
string
propertyName
,
JObject
propertyValue
)
{
var
jObj
=
JObject
.
Parse
(
json
);
if
(
jObj
.
TryGetValue
(
propertyName
,
out
var
_
))
{
jObj
[
propertyName
]
=
propertyValue
;
}
else
{
jObj
.
Add
(
new
JProperty
(
propertyName
,
propertyValue
));
}
return
jObj
.
ToString
();
}
public
static
string
AddExceptionProperty
(
string
json
,
Exception
exception
)
{
var
jObject
=
ToJObject
(
exception
);
return
AddJsonProperty
(
json
,
"ExceptionMessage"
,
jObject
);
}
private
static
bool
CanConvertFromString
(
Type
destinationType
)
{
destinationType
=
Nullable
.
GetUnderlyingType
(
destinationType
)
??
destinationType
;
return
IsSimpleType
(
destinationType
)
||
TypeDescriptor
.
GetConverter
(
destinationType
).
CanConvertFrom
(
typeof
(
string
));
}
private
static
bool
IsSimpleType
(
Type
type
)
{
return
type
.
GetTypeInfo
().
IsPrimitive
||
type
==
typeof
(
decimal
)
||
type
==
typeof
(
string
)
||
type
==
typeof
(
DateTime
)
||
type
==
typeof
(
Guid
)
||
type
==
typeof
(
DateTimeOffset
)
||
type
==
typeof
(
TimeSpan
)
||
type
==
typeof
(
Uri
);
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment