diff --git a/NewLife.Core/Data/DbTable.cs b/NewLife.Core/Data/DbTable.cs
index da2dc92..c354898 100644
--- a/NewLife.Core/Data/DbTable.cs
+++ b/NewLife.Core/Data/DbTable.cs
@@ -128,10 +128,11 @@ namespace NewLife.Data
var count = ts.Length;
var total = 0;
+ var length = bn.Stream.Length;
var rs = new List<Object[]>(rows);
for (var k = 0; k < rows; k++)
{
- if (bn.Stream.Position >= bn.Stream.Length) break;
+ if (bn.Stream.Position >= length) break;
var row = new Object[count];
for (var i = 0; i < count; i++)
diff --git a/NewLife.Core/Log/Logger.cs b/NewLife.Core/Log/Logger.cs
index e38d65f..c22d614 100644
--- a/NewLife.Core/Log/Logger.cs
+++ b/NewLife.Core/Log/Logger.cs
@@ -119,7 +119,7 @@ namespace NewLife.Log
class NullLogger : Logger
{
- public override Boolean Enable { get { return false; } set { } }
+ public override Boolean Enable { get => false; set { } }
protected override void OnWrite(LogLevel level, String format, params Object[] args) { }
}
diff --git a/NewLife.Core/Reflection/IReflect.cs b/NewLife.Core/Reflection/IReflect.cs
index b72309f..9030e5e 100644
--- a/NewLife.Core/Reflection/IReflect.cs
+++ b/NewLife.Core/Reflection/IReflect.cs
@@ -661,6 +661,7 @@ namespace NewLife.Reflection
public Boolean As(Type type, Type baseType)
{
if (type == null) return false;
+ if (type == baseType) return true;
// 如果基类是泛型定义
if (baseType.IsGenericTypeDefinition && type.IsGenericType && !type.IsGenericTypeDefinition) type = type.GetGenericTypeDefinition();
@@ -669,8 +670,8 @@ namespace NewLife.Reflection
if (baseType.IsAssignableFrom(type)) return true;
- // 绝大部分子类判断可通过IsAssignableFrom完成,除非其中一方ReflectionOnly
- if (type.Assembly.ReflectionOnly != baseType.Assembly.ReflectionOnly) return false;
+ //// 绝大部分子类判断可通过IsAssignableFrom完成,除非其中一方ReflectionOnly
+ //if (type.Assembly.ReflectionOnly == baseType.Assembly.ReflectionOnly) return false;
// 缓存
//var key = $"{type.FullName}_{baseType.FullName}";
@@ -683,28 +684,28 @@ namespace NewLife.Reflection
//if (dic.TryGetValue(baseType, out var rs)) return rs;
var rs = false;
- // 接口
- if (baseType.IsInterface)
- {
- if (type.GetInterface(baseType.FullName) != null)
- rs = true;
- else if (type.GetInterfaces().Any(e => e.IsGenericType && baseType.IsGenericTypeDefinition ? e.GetGenericTypeDefinition() == baseType : e == baseType))
- rs = true;
- }
+ //// 接口
+ //if (baseType.IsInterface)
+ //{
+ // if (type.GetInterface(baseType.FullName) != null)
+ // rs = true;
+ // else if (type.GetInterfaces().Any(e => e.IsGenericType && baseType.IsGenericTypeDefinition ? e.GetGenericTypeDefinition() == baseType : e == baseType))
+ // rs = true;
+ //}
- // 判断是否子类时,支持只反射加载的程序集
- if (!rs && type.Assembly.ReflectionOnly)
- {
- // 反射加载时,需要特殊处理接口
- //if (baseType.IsInterface && type.GetInterface(baseType.Name) != null) return true;
- while (!rs && type != typeof(Object))
- {
- if (type.FullName == baseType.FullName &&
- type.AssemblyQualifiedName == baseType.AssemblyQualifiedName)
- rs = true;
- type = type.BaseType;
- }
- }
+ //// 判断是否子类时,支持只反射加载的程序集
+ //if (!rs && type.Assembly.ReflectionOnly)
+ //{
+ // // 反射加载时,需要特殊处理接口
+ // //if (baseType.IsInterface && type.GetInterface(baseType.Name) != null) return true;
+ // while (!rs && type != typeof(Object))
+ // {
+ // if (type.FullName == baseType.FullName &&
+ // type.AssemblyQualifiedName == baseType.AssemblyQualifiedName)
+ // rs = true;
+ // type = type.BaseType;
+ // }
+ //}
//dic.TryAdd(baseType, rs);
diff --git a/NewLife.Core/Serialization/Binary/Binary.cs b/NewLife.Core/Serialization/Binary/Binary.cs
index 60e2f61..a1bc311 100644
--- a/NewLife.Core/Serialization/Binary/Binary.cs
+++ b/NewLife.Core/Serialization/Binary/Binary.cs
@@ -121,7 +121,7 @@ namespace NewLife.Serialization
type = value.GetType();
// 一般类型为空是顶级调用
- if (Hosts.Count == 0) WriteLog("BinaryWrite {0} {1}", type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("BinaryWrite {0} {1}", type.Name, value);
}
// 优先 IAccessor 接口
@@ -240,7 +240,7 @@ namespace NewLife.Serialization
//[DebuggerHidden]
public virtual Boolean TryRead(Type type, ref Object value)
{
- if (Hosts.Count == 0) WriteLog("BinaryRead {0} {1}", type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("BinaryRead {0} {1}", type.Name, value);
// 优先 IAccessor 接口
if (value is IAccessor acc)
diff --git a/NewLife.Core/Serialization/Json/Json.cs b/NewLife.Core/Serialization/Json/Json.cs
index 0f95f72..ae662b1 100644
--- a/NewLife.Core/Serialization/Json/Json.cs
+++ b/NewLife.Core/Serialization/Json/Json.cs
@@ -105,7 +105,7 @@ namespace NewLife.Serialization
type = value.GetType();
// 一般类型为空是顶级调用
- if (Hosts.Count == 0) WriteLog("JsonWrite {0} {1}", type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("JsonWrite {0} {1}", type.Name, value);
}
//foreach (var item in Handlers)
@@ -169,7 +169,7 @@ namespace NewLife.Serialization
[DebuggerHidden]
public virtual Boolean TryRead(Type type, ref Object value)
{
- if (Hosts.Count == 0) WriteLog("JsonRead {0} {1}", type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("JsonRead {0} {1}", type.Name, value);
foreach (var item in Handlers)
{
diff --git a/NewLife.Core/Serialization/Xml/Xml.cs b/NewLife.Core/Serialization/Xml/Xml.cs
index 69c41cb..5c48dd4 100644
--- a/NewLife.Core/Serialization/Xml/Xml.cs
+++ b/NewLife.Core/Serialization/Xml/Xml.cs
@@ -115,7 +115,7 @@ namespace NewLife.Serialization
CurrentName = name;
// 一般类型为空是顶级调用
- if (Hosts.Count == 0) WriteLog("XmlWrite {0} {1}", name ?? type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("XmlWrite {0} {1}", name ?? type.Name, value);
// 要先写入根
Depth++;
@@ -240,7 +240,7 @@ namespace NewLife.Serialization
// 移动到第一个元素
while (reader.NodeType != XmlNodeType.Element) { if (!reader.Read()) return false; }
- if (Hosts.Count == 0) WriteLog("XmlRead {0} {1}", type.Name, value);
+ if (Hosts.Count == 0 && Log != null && Log.Enable) WriteLog("XmlRead {0} {1}", type.Name, value);
// 要先写入根
Depth++;