示例#1
0
        private void RegisterTypeReader(INamedTypeSymbol symbol, string systemTypeMetadataName)
        {
            var readerMechanism = new TypeReaderMechanism(_modelBuilder, symbol, systemTypeMetadataName);

            switch (symbol.TypeKind)
            {
            case TypeKind.Class:
            case TypeKind.Delegate:
                _results.Add(new ClassReader(readerMechanism));
                break;

            case TypeKind.Interface:
                _results.Add(new InterfaceReader(readerMechanism));
                break;

            case TypeKind.Struct:
                _results.Add(new StructReader(readerMechanism));
                break;

            case TypeKind.Enum:
                _results.Add(new EnumReader(readerMechanism));
                break;

            default:
                throw new NotImplementedException($"{symbol.TypeKind} '{symbol.Name}'");
            }
        }
示例#2
0
 public InterfaceReader(TypeReaderMechanism mechanism)
 {
     _mechanism = mechanism;
 }
示例#3
0
 public ClassReader(TypeReaderMechanism mechanism)
 {
     _mechanism = mechanism;
     _mechanism.MemberBuilder.TypeKind = TypeMemberKind.Class;
 }
示例#4
0
 public StructReader(TypeReaderMechanism mechanism)
 {
     _mechanism = mechanism;
     _mechanism.MemberBuilder.TypeKind = TypeMemberKind.Struct;
 }
示例#5
0
 public EnumReader(TypeReaderMechanism mechanism)
 {
     _mechanism = mechanism;
     _mechanism.MemberBuilder.TypeKind = TypeMemberKind.Enum;
 }