/// <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); }
/// <summary> /// 处理 Red /// </summary> /// <returns></returns> private void AddRed(GenericScheme scheme) { if (scheme.Red == GenericKeyword.Struct) { AddStruct(scheme.Name); } AddUnmanaged(scheme.Name); }
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()); } }
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; } }
private void AddOrange(GenericScheme scheme) { AddNewNull(scheme.Name); }