public void AddArgument(bool isField, out NamedArgumentTypeEncoder typeEncoder, out NameEncoder name, out LiteralEncoder literal) { Builder.WriteByte(isField ? (byte)0x53 : (byte)0x54); typeEncoder = new NamedArgumentTypeEncoder(Builder); name = new NameEncoder(Builder); literal = new LiteralEncoder(Builder); }
public void NamedArgumentTypeEncoder_SZArray() { var b = new BlobBuilder(); var e = new NamedArgumentTypeEncoder(b); Assert.Same(b, e.Builder); e.SZArray(); AssertEx.Equal(new byte[0], b.ToArray()); b.Clear(); }
static void EncodeType(NamedArgumentTypeEncoder typeEnc, Type type) { if (type == typeof(Type)) { typeEnc.ScalarType().SystemType(); } else if (type.IsArray) { EncodeType(typeEnc.SZArray().ElementType(), type.GetElementType()); } else { // Work out the primitive type code var primTypeCode = PrimitiveTypeCodeFromSystemTypeCode(type); typeEnc.ScalarType().PrimitiveType(primTypeCode); } }
public static void NamedArgumentType(this NamedArgumentTypeEncoder encoder, INamedTypeSymbol attributeType, string field) { var fieldMembers = attributeType.GetMembers(field); var fieldSymbol = fieldMembers.First() as IFieldSymbol; if (fieldSymbol.Type.SpecialType == SpecialType.System_Object) { encoder.Object(); } else if (fieldSymbol.Type.SpecialType == SpecialType.System_Array) { // TODO array type encoder encoder.SZArray(); } else if (fieldSymbol.Type.TypeKind == TypeKind.Enum) { encoder.ScalarType().Enum(fieldSymbol.Type.ToString()); } else { encoder.ScalarType().CustomElementType(fieldSymbol); } }
public void AddArgument(bool isField, out NamedArgumentTypeEncoder typeEncoder, out NameEncoder name, out LiteralEncoder literal) { Builder.WriteByte(isField ? (byte)0x53 : (byte)0x54); typeEncoder = new NamedArgumentTypeEncoder(Builder); name = new NameEncoder(Builder); literal = new LiteralEncoder(Builder); }
public void NamedArgumentTypeEncoder_SZArray() { var b = new BlobBuilder(); var e = new NamedArgumentTypeEncoder(b); Assert.Same(b, e.Builder); e.SZArray(); AssertEx.Equal(new byte[0], b.ToArray()); b.Clear(); }