扩展object方法,为null时排除异常
This commit is contained in:
parent
0faab483a9
commit
a3bd83ff03
|
@ -41,6 +41,16 @@ namespace Falcon.SugarApi.Test
|
|||
Console.WriteLine(t.GetType().FullName);
|
||||
Assert.IsTrue(t.GetType().Equals(typeof(int)));
|
||||
}
|
||||
/// <summary>
|
||||
/// 测试对象为null则会抛出异常
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void ThrowNullExceptionWhenNullTest() {
|
||||
var obj = new object();
|
||||
obj.ThrowNullExceptionWhenNull();
|
||||
obj = null;
|
||||
Assert.ThrowsException<ArgumentNullException>(() => obj.ThrowNullExceptionWhenNull());
|
||||
}
|
||||
}
|
||||
|
||||
public class SourceClass
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace Falcon.SugarApi
|
|||
select new { s, t };
|
||||
foreach (var item in all) {
|
||||
//item.t.SetValue(target, Convert.ChangeType(item.s.GetValue(source), item.t.PropertyType));
|
||||
item.t.SetValue(target,item.s.GetValue(source).ChangeType(item.t.PropertyType));
|
||||
item.t.SetValue(target, item.s.GetValue(source).ChangeType(item.t.PropertyType));
|
||||
}
|
||||
return source;
|
||||
}
|
||||
|
@ -47,11 +47,11 @@ namespace Falcon.SugarApi
|
|||
/// <param name="source">原对象</param>
|
||||
/// <param name="targetType">目标类型</param>
|
||||
/// <returns>转换后的类型</returns>
|
||||
public static object? ChangeType(this object? source,Type targetType) {
|
||||
public static object? ChangeType(this object? source, Type targetType) {
|
||||
if (targetType == null) {
|
||||
throw new ArgumentNullException("targetType");
|
||||
}
|
||||
if (source==null) {
|
||||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
if (targetType.IsGenericType && targetType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) {
|
||||
|
@ -60,5 +60,18 @@ namespace Falcon.SugarApi
|
|||
}
|
||||
return Convert.ChangeType(source, targetType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 如果对象为null则抛出异常
|
||||
/// </summary>
|
||||
/// <param name="obj">检测对象</param>
|
||||
/// <returns>对象本身</returns>
|
||||
/// <exception cref="ArgumentNullException">对象为null</exception>
|
||||
public static object? ThrowNullExceptionWhenNull(this object? obj) {
|
||||
if (obj == null) {
|
||||
throw new ArgumentNullException();
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user