diff --git a/DBFilesClient.NET/DBFilesClient.NET.nuspec b/DBFilesClient.NET/DBFilesClient.NET.nuspec
index 867ea60..4f89621 100644
--- a/DBFilesClient.NET/DBFilesClient.NET.nuspec
+++ b/DBFilesClient.NET/DBFilesClient.NET.nuspec
@@ -8,6 +8,7 @@
Warpten
false
A blazing-fast DBC and DB2 file loader for World of Warcraft files.
+ http://github.com/Warpten/DBFilesClient.NET
DBC DB2 WDBC WDB2 WDB3 WDB4 WDB5 WOW
\ No newline at end of file
diff --git a/DBFilesClient.NET/Properties/AssemblyInfo.cs b/DBFilesClient.NET/Properties/AssemblyInfo.cs
index 51118b1..07fb42a 100644
--- a/DBFilesClient.NET/Properties/AssemblyInfo.cs
+++ b/DBFilesClient.NET/Properties/AssemblyInfo.cs
@@ -31,7 +31,7 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.4")]
-[assembly: AssemblyFileVersion("1.1.4")]
+[assembly: AssemblyVersion("1.1.5")]
+[assembly: AssemblyFileVersion("1.1.5")]
-[assembly: AssemblyInformationalVersion("1.1.4")]
+[assembly: AssemblyInformationalVersion("1.1.5")]
diff --git a/DBFilesClient.NET/Reader.cs b/DBFilesClient.NET/Reader.cs
index 3179c5f..2aac5c9 100644
--- a/DBFilesClient.NET/Reader.cs
+++ b/DBFilesClient.NET/Reader.cs
@@ -65,9 +65,9 @@ internal virtual MethodInfo GetPrimitiveLoader(Type typeInfo, int fieldIndex)
return _binaryReaderMethods[Type.GetTypeCode(typeInfo)];
}
- internal virtual MethodInfo GetPrimitiveLoader(FieldInfo fieldInfo, int fieldIndex)
+ internal virtual MethodInfo GetPrimitiveLoader(PropertyInfo propertyInfo, int fieldIndex)
{
- var fieldType = fieldInfo.FieldType;
+ var fieldType = propertyInfo.PropertyType;
if (fieldType.IsArray)
fieldType = fieldType.GetElementType();
@@ -75,14 +75,13 @@ internal virtual MethodInfo GetPrimitiveLoader(FieldInfo fieldInfo, int fieldInd
if (typeCode == TypeCode.Object)
return null;
- MethodInfo methodInfo;
- _binaryReaderMethods.TryGetValue(typeCode, out methodInfo);
+ _binaryReaderMethods.TryGetValue(typeCode, out MethodInfo methodInfo);
return methodInfo;
}
- private Expression GetSimpleReaderExpression(FieldInfo fieldInfo, int fieldIndex, Expression readerExpr)
+ private Expression GetSimpleReaderExpression(PropertyInfo propertyInfo, int fieldIndex, Expression readerExpr)
{
- var fieldType = fieldInfo.FieldType;
+ var fieldType = propertyInfo.PropertyType;
if (fieldType.IsArray)
fieldType = fieldType.GetElementType();
@@ -106,7 +105,7 @@ private Expression GetSimpleReaderExpression(FieldInfo fieldInfo, int fieldIndex
Expression callExpression;
if (typeCode != TypeCode.Object)
{
- var callVirt = GetPrimitiveLoader(fieldInfo, fieldIndex);
+ var callVirt = GetPrimitiveLoader(propertyInfo, fieldIndex);
callExpression = Expression.Call(readerExpr, callVirt);
}
@@ -139,27 +138,27 @@ protected virtual void GenerateRecordLoader()
// Instantiate the return value.
expressions.Add(Expression.Assign(resultExpr, Expression.New(typeof(T))));
- var fields = typeof(T).GetFields(BindingFlags.Public | BindingFlags.Instance).ToArray();
+ var fields = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToArray();
if (fields.Length < FileHeader.FieldCount)
throw new InvalidOperationException(
- $"Structure {typeof(T).Name} is missing fields ({fields.Length} found, {FileHeader.FieldCount} expected");
+ $"Structure {typeof(T).Name} is missing properties ({fields.Length} found, {FileHeader.FieldCount} expected");
for (var fieldIndex = 0; fieldIndex < FileHeader.FieldCount; ++fieldIndex)
{
- var fieldInfo = fields[fieldIndex];
+ var propertyInfo = fields[fieldIndex];
- var callExpression = GetSimpleReaderExpression(fieldInfo, fieldIndex, readerExpr);
+ var callExpression = GetSimpleReaderExpression(propertyInfo, fieldIndex, readerExpr);
- if (!fieldInfo.FieldType.IsArray)
+ if (!propertyInfo.PropertyType.IsArray)
{
expressions.Add(Expression.Assign(
- Expression.MakeMemberAccess(resultExpr, fieldInfo),
- Expression.Convert(callExpression, fieldInfo.FieldType)));
+ Expression.MakeMemberAccess(resultExpr, propertyInfo),
+ Expression.Convert(callExpression, propertyInfo.PropertyType)));
}
else
{
- var arraySize = GetArraySize(fieldInfo, fieldIndex);
+ var arraySize = GetArraySize(propertyInfo, fieldIndex);
var exitLabelExpr = Expression.Label();
var itrExpr = Expression.Variable(typeof(int));
@@ -167,8 +166,8 @@ protected virtual void GenerateRecordLoader()
new[] { itrExpr },
// ReSharper disable once AssignNullToNotNullAttribute
Expression.Assign(
- Expression.MakeMemberAccess(resultExpr, fieldInfo),
- Expression.New(fieldInfo.FieldType.GetConstructor(new[] { typeof(int) }),
+ Expression.MakeMemberAccess(resultExpr, propertyInfo),
+ Expression.New(propertyInfo.PropertyType.GetConstructor(new[] { typeof(int) }),
Expression.Constant(arraySize))
),
@@ -177,9 +176,9 @@ protected virtual void GenerateRecordLoader()
Expression.IfThenElse(
Expression.LessThan(itrExpr, Expression.Constant(arraySize)),
Expression.Assign(
- Expression.ArrayAccess(Expression.MakeMemberAccess(resultExpr, fieldInfo),
+ Expression.ArrayAccess(Expression.MakeMemberAccess(resultExpr, propertyInfo),
Expression.PostIncrementAssign(itrExpr)),
- Expression.Convert(callExpression, fieldInfo.FieldType.GetElementType())),
+ Expression.Convert(callExpression, propertyInfo.PropertyType.GetElementType())),
Expression.Break(exitLabelExpr)),
exitLabelExpr)
));
@@ -191,11 +190,11 @@ protected virtual void GenerateRecordLoader()
RecordReader = Expression.Lambda, T>>(expressionBlock, readerExpr).Compile();
}
- protected virtual int GetArraySize(FieldInfo fieldInfo, int fieldIndex)
+ protected virtual int GetArraySize(PropertyInfo propertyInfo, int fieldIndex)
{
- var marshalAttr = fieldInfo.GetCustomAttribute();
+ var marshalAttr = propertyInfo.GetCustomAttribute();
if (marshalAttr == null)
- throw new InvalidOperationException($"Field '{typeof(T).Name}.{fieldInfo.Name} is an array and needs to be decorated with MarshalAsAttribute!");
+ throw new InvalidOperationException($"Field '{typeof(T).Name}.{propertyInfo.Name} is an array and needs to be decorated with MarshalAsAttribute!");
return marshalAttr.SizeConst;
}
diff --git a/DBFilesClient.NET/WDB5/Reader.cs b/DBFilesClient.NET/WDB5/Reader.cs
index 45b9157..be67426 100644
--- a/DBFilesClient.NET/WDB5/Reader.cs
+++ b/DBFilesClient.NET/WDB5/Reader.cs
@@ -47,11 +47,11 @@ internal override MethodInfo GetPrimitiveLoader(Type fieldType, int fieldIndex)
return base.GetPrimitiveLoader(fieldType, fieldIndex);
}
- internal override MethodInfo GetPrimitiveLoader(FieldInfo fieldInfo, int fieldIndex)
+ internal override MethodInfo GetPrimitiveLoader(PropertyInfo propertyInfo, int fieldIndex)
{
var fieldData = FieldMeta[fieldIndex];
- var fieldType = fieldInfo.FieldType;
+ var fieldType = propertyInfo.PropertyType;
if (fieldType.IsArray)
fieldType = fieldType.GetElementType();
@@ -78,12 +78,12 @@ internal override MethodInfo GetPrimitiveLoader(FieldInfo fieldInfo, int fieldIn
: base.GetPrimitiveLoader(typeof (byte), fieldIndex);
default:
throw new ArgumentOutOfRangeException(
- $@"Field {fieldInfo.Name} has its metadata expose as an unsupported {
+ $@"Field {propertyInfo.Name} has its metadata expose as an unsupported {
fieldData.ByteSize}-bytes field!");
}
}
- return base.GetPrimitiveLoader(fieldInfo, fieldIndex);
+ return base.GetPrimitiveLoader(propertyInfo, fieldIndex);
}
public override string ReadString()
@@ -259,23 +259,23 @@ protected virtual void LoadRecord(long recordPosition, int key, bool forceKey =
}
}
- protected override int GetArraySize(FieldInfo fieldInfo, int fieldIndex)
+ protected override int GetArraySize(PropertyInfo propertyInfo, int fieldIndex)
{
var currentField = FieldMeta[fieldIndex];
var arraySize = 1;
if (fieldIndex + 1 < FieldMeta.Length)
arraySize = (FieldMeta[fieldIndex + 1].Position - currentField.Position) / currentField.ByteSize;
- else if (fieldInfo.FieldType.IsArray)
+ else if (propertyInfo.PropertyType.IsArray)
{
var largestFieldSize = FieldMeta.Max(k => k.ByteSize);
var smallestFieldSize = FieldMeta.Min(k => k.ByteSize);
if (smallestFieldSize != largestFieldSize)
{
- var marshalAttr = fieldInfo.GetCustomAttribute();
+ var marshalAttr = propertyInfo.GetCustomAttribute();
if (marshalAttr == null)
- throw new InvalidStructureException($"{typeof(T).Name}.{fieldInfo.Name}'s size can't be guessed!");
+ throw new InvalidStructureException($"{typeof(T).Name}.{propertyInfo.Name}'s size can't be guessed!");
if (marshalAttr.SizeConst != 0)
arraySize = marshalAttr.SizeConst;
diff --git a/DBFilesClient.NET/WDB6/Reader.cs b/DBFilesClient.NET/WDB6/Reader.cs
index e20e399..a76eec7 100644
--- a/DBFilesClient.NET/WDB6/Reader.cs
+++ b/DBFilesClient.NET/WDB6/Reader.cs
@@ -70,9 +70,9 @@ protected override void GenerateRecordLoader()
BaseStream.Position = BaseStream.Length - FileHeader.CommonDataTableSize;
var columnCount = ReadInt32();
- var fields = typeof (T).GetFields(BindingFlags.Public | BindingFlags.Instance).ToArray();
+ var fields = typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToArray();
for (var i = 0; i < columnCount; ++i)
- _nonZeroValues[i] = new CommonData(this, fields[i].FieldType);
+ _nonZeroValues[i] = new CommonData(this, fields[i].PropertyType);
// Generate an Action, T, int>
var expressionList = new List();
@@ -81,12 +81,12 @@ protected override void GenerateRecordLoader()
var structureExpr = Expression.Parameter(typeof (T));
for (var i = FileHeader.FieldCount; i < FileHeader.TotalFieldCount; ++i)
{
- var fieldInfo = fields[i];
- if (fieldInfo.FieldType.IsArray)
+ var propertyInfo = fields[i];
+ if (propertyInfo.PropertyType.IsArray)
throw new InvalidOperationException("Array fields in off-stream data are not handled");
MethodInfo convertMethod = null;
- switch (Type.GetTypeCode(fieldInfo.FieldType))
+ switch (Type.GetTypeCode(propertyInfo.PropertyType))
{
case TypeCode.Int32:
convertMethod = typeof(Convert).GetMethod("ToInt32", new[] {typeof(object)});
@@ -124,8 +124,8 @@ protected override void GenerateRecordLoader()
Expression.IfThen(
Expression.NotEqual(localExpr, Expression.Constant(null)),
Expression.Assign(
- Expression.MakeMemberAccess(structureExpr, fieldInfo),
- Expression.Convert(localExpr, fieldInfo.FieldType)))));
+ Expression.MakeMemberAccess(structureExpr, propertyInfo),
+ Expression.Convert(localExpr, propertyInfo.PropertyType)))));
}
var lambda = Expression.Lambda, T, int>>(
@@ -176,23 +176,23 @@ protected override void LoadRecord(long recordPosition, int key, bool forceKey =
TriggerRecordLoaded(key, record);
}
- protected override int GetArraySize(FieldInfo fieldInfo, int fieldIndex)
+ protected override int GetArraySize(PropertyInfo propertyInfo, int fieldIndex)
{
var currentField = FieldMeta[fieldIndex];
var arraySize = 1;
if (fieldIndex + 1 < FieldMeta.Length)
arraySize = (FieldMeta[fieldIndex + 1].Position - currentField.Position) / currentField.ByteSize;
- else if (fieldInfo.FieldType.IsArray)
+ else if (propertyInfo.PropertyType.IsArray)
{
var largestFieldSize = FieldMeta.Max(k => k.ByteSize);
var smallestFieldSize = FieldMeta.Min(k => k.ByteSize);
if (smallestFieldSize != largestFieldSize)
{
- var marshalAttr = fieldInfo.GetCustomAttribute();
+ var marshalAttr = propertyInfo.GetCustomAttribute();
if (marshalAttr == null)
- throw new InvalidStructureException($"{typeof(T).Name}.{fieldInfo.Name}'s size can't be guessed!");
+ throw new InvalidStructureException($"{typeof(T).Name}.{propertyInfo.Name}'s size can't be guessed!");
if (marshalAttr.SizeConst != 0)
arraySize = marshalAttr.SizeConst;
diff --git a/DBFilesClient.NET/WDBC/Reader.cs b/DBFilesClient.NET/WDBC/Reader.cs
index 884a6a5..e880598 100644
--- a/DBFilesClient.NET/WDBC/Reader.cs
+++ b/DBFilesClient.NET/WDBC/Reader.cs
@@ -24,10 +24,10 @@ protected override void LoadHeader()
FileHeader.HasStringTable = FileHeader.StringTableSize != 0;
FileHeader.StringTableOffset = BaseStream.Length - FileHeader.StringTableSize;
- foreach (var fieldInfo in typeof (T).GetFields(BindingFlags.Public | BindingFlags.Instance))
+ foreach (var propertyInfo in typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
- if (fieldInfo.FieldType.IsArray)
- FileHeader.FieldCount += fieldInfo.GetCustomAttribute()?.SizeConst ?? 0;
+ if (propertyInfo.PropertyType.IsArray)
+ FileHeader.FieldCount += propertyInfo.GetCustomAttribute()?.SizeConst ?? 0;
else
++FileHeader.FieldCount;
}
diff --git a/DBFilesClient.NET/nuget.exe b/DBFilesClient.NET/nuget.exe
new file mode 100644
index 0000000..a34c367
Binary files /dev/null and b/DBFilesClient.NET/nuget.exe differ
diff --git a/Tests/ReaderTest.cs b/Tests/ReaderTest.cs
index d88218a..8fa2e88 100644
--- a/Tests/ReaderTest.cs
+++ b/Tests/ReaderTest.cs
@@ -70,11 +70,11 @@ public void SpellXSpellVisual()
private static void PrintRecord(int key, T instance)
{
- foreach (var field in typeof(T).GetFields())
+ foreach (var field in typeof(T).GetProperties())
{
var value = field.GetValue(instance);
- if (field.FieldType.IsArray)
+ if (field.PropertyType.IsArray)
{
var enumerableValue = value as IEnumerable;
var valueBuilder = new List();