コード例 #1
0
 protected override TypeSlim VisitSimple(SimpleTypeSlim type)
 {
     if (type == SlimType)
     {
         return(TypeSlim.Array(type));
     }
     else
     {
         return(base.VisitSimple(type));
     }
 }
コード例 #2
0
 protected override TypeSlim VisitSimple(SimpleTypeSlim type)
 {
     if (type == SlimType)
     {
         return(TypeSlim.Simple(new AssemblySlim("Foo"), "Bar"));
     }
     else
     {
         return(base.VisitSimple(type));
     }
 }
コード例 #3
0
        /// <summary>
        /// Extends unification for simple types to support unification of integers to enums.
        /// </summary>
        /// <param name="typeRich">The CLR type.</param>
        /// <param name="typeSlim">The slim type.</param>
        /// <returns>true if the unification was successful, false otherwise.</returns>
        protected override bool UnifySimple(Type typeRich, SimpleTypeSlim typeSlim)
        {
            var canUnify = base.UnifySimple(typeRich, typeSlim);

            if (!canUnify && typeRich.IsEnum)
            {
                var isUnderlying = base.UnifySimple(Enum.GetUnderlyingType(typeRich), typeSlim);
                return(isUnderlying);
            }

            return(canUnify);
        }
コード例 #4
0
ファイル: Domain.cs プロジェクト: tamirdresher/reaqtor
        private TypeRef AddTypeSimple(SimpleTypeSlim type)
        {
            if (!_assemblies.TryGetValue(type.Assembly, out int asmIndex))
            {
                asmIndex = _assemblies.Count;
                _assemblies[type.Assembly] = asmIndex;
                _assemblyDefs.Add(type.Assembly);
            }

            var index = _typeDefs.Count;

            _typeDefs.Add(new SimpleTypeDef(type.Name, asmIndex));
            return(new SimpleTypeRef(index));
        }
コード例 #5
0
 protected override System.Type VisitSimple(SimpleTypeSlim type) => GetCarriedType(type);