本文整理汇总了C#中KeyValue.As方法的典型用法代码示例。如果您正苦于以下问题:C# KeyValue.As方法的具体用法?C# KeyValue.As怎么用?C# KeyValue.As使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KeyValue
的用法示例。
在下文中一共展示了KeyValue.As方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ImportField
//.........这里部分代码省略.........
if (def.Type == GFF.FieldType.UInt8 &&
list.GetType() == typeof(byte[]))
{
var bytes = (byte[])list;
output.Write(bytes, 0, bytes.Length);
}
else
{
long itemOffset = output.Position;
foreach (var item in list)
{
GFF.Builtin.Serialize(output, def.Type, item, LittleEndian);
itemOffset += itemSize;
}
}
break;
}
}
}
}
else
{
if (def.IsReference == true &&
def.Type != GFF.FieldType.Structure)
{
throw new NotSupportedException();
}
switch (def.Type)
{
case GFF.FieldType.String:
{
var s = data.As<string>();
if (s == null || s.Length == 0)
{
output.WriteValueU32(0xFFFFFFFF, LittleEndian);
}
else
{
var length = s.Length + 1;
output.WriteValueU32((uint)newOffset, LittleEndian);
output.Seek(newOffset, SeekOrigin.Begin);
output.WriteValueS32(length, LittleEndian);
output.WriteString(s, LittleEndian ? Encoding.Unicode : Encoding.BigEndianUnicode);
output.WriteValueU16(0, LittleEndian);
newOffset += 4 + (2 * length);
}
break;
}
case GFF.FieldType.TalkString:
{
var s = data.As<GFF.Builtins.TalkString>();
output.WriteValueU32(s.Id, LittleEndian);
if (s.String == null)
{
output.WriteValueU32(0xFFFFFFFF, LittleEndian);
}
else if (s.String.Length == 0)
{