Esempio n. 1
0
        /// <summary>
        /// 添加泛型参数或为泛型参数添加约束,或修改此参数的约束
        /// </summary>
        /// <param name="parmter">参数名称</param>
        /// <param name="scheme">泛型类别</param>
        /// <returns></returns>
        public GenericBuilder AddParam(GenericScheme scheme)
        {
            if (scheme == null)
            {
                throw new ArgumentNullException(nameof(scheme), "参数不能为 null !");
            }

            switch (scheme.TypeId)
            {
            case 0: Add(scheme.Name, out _); break;

            case 1: AddRed(scheme); break;

            case 2: AddYellow(scheme); break;

            case 3: AddBlue(scheme); break;

            case 4: AddYellow(scheme); AddBlue(scheme); break;

            case 5: AddYellow(scheme); AddOrange(scheme); break;

            case 6: AddYellow(scheme); AddBlue(scheme); AddOrange(scheme); break;

            case 7: AddBlue(scheme); AddOrange(scheme); break;

            default:
                throw new Exception();
            }

            return(this);
        }
Esempio n. 2
0
        /// <summary>
        /// 处理 Red
        /// </summary>
        /// <returns></returns>
        private void AddRed(GenericScheme scheme)
        {
            if (scheme.Red == GenericKeyword.Struct)
            {
                AddStruct(scheme.Name);
            }

            AddUnmanaged(scheme.Name);
        }
Esempio n. 3
0
 private void AddBlue(GenericScheme scheme)
 {
     if (scheme.InterfaceType != null)
     {
         AddInterface(scheme.Name, scheme.InterfaceType.Select(x => x.Name).ToArray());
     }
     if (scheme.TU != null)
     {
         AddTU(scheme.Name, scheme.TU.Select(x => x).ToArray());
     }
 }
Esempio n. 4
0
        private void AddYellow(GenericScheme scheme)
        {
            switch (scheme.Yellow)
            {
            case GenericKeyword.Class: AddClass(scheme.Name); break;

            case GenericKeyword.Notnull: AddNotNull(scheme.Name); break;

            case GenericKeyword.BaseClass: AddBaseClass(scheme.Name, scheme.BaseType.Name); break;
            }
        }
Esempio n. 5
0
 private void AddOrange(GenericScheme scheme)
 {
     AddNewNull(scheme.Name);
 }