mirror of
				https://github.com/esiur/esiur-dotnet.git
				synced 2025-10-31 07:51:36 +00:00 
			
		
		
		
	2.4.9
This commit is contained in:
		| @@ -91,41 +91,56 @@ public class FunctionTemplate : MemberTemplate | ||||
|  | ||||
|         var annotationAttr = mi.GetCustomAttribute<AnnotationAttribute>(true); | ||||
|  | ||||
|         var nullabilityInfoContext = new NullabilityInfoContext(); | ||||
|  | ||||
|         rtType.Nullable = nullabilityInfoContext.Create(mi.ReturnParameter).WriteState is NullabilityState.Nullable; | ||||
|         //var nullabilityInfoContext = new NullabilityInfoContext(); | ||||
|         //rtType.Nullable = nullabilityInfoContext.Create(mi.ReturnParameter).WriteState is NullabilityState.Nullable; | ||||
|  | ||||
|  | ||||
|         //var nullableAttr = mi.GetCustomAttribute<NullableAttribute>(true); | ||||
|         //var nullableContextAttr = mi.GetCustomAttribute<NullableContextAttribute>(true); | ||||
|         var nullableAttr = mi.GetCustomAttributes(true).FirstOrDefault(x => x.GetType().FullName == "System.Runtime.CompilerServices.NullableAttribute"); | ||||
|         var nullableContextAttr = mi.GetCustomAttributes(true).FirstOrDefault(x => x.GetType().FullName == "System.Runtime.CompilerServices.NullableContextAttribute"); | ||||
|  | ||||
|         //var flags = nullableAttr?.Flags?.ToList() ?? new List<byte>(); | ||||
|         var nullableAttrFlags = (nullableAttr?.GetType().GetField("NullableFlags").GetValue(nullableAttr) as byte[] ?? new byte[0]).ToList(); | ||||
|         var nullableContextAttrFlag = (byte)(nullableContextAttr?.GetType().GetField("Flag").GetValue(nullableContextAttr) ?? (byte)0); | ||||
|  | ||||
|         //var flags = ((byte[])nullableAttr?.NullableFlags ?? new byte[0]).ToList(); | ||||
|  | ||||
|         //var rtNullableAttr = mi.ReturnTypeCustomAttributes.GetCustomAttributes(typeof(NullableAttribute), true).FirstOrDefault() as NullableAttribute; | ||||
|         //var rtNullableContextAttr = mi.ReturnTypeCustomAttributes | ||||
|         var rtNullableAttr = mi.ReturnTypeCustomAttributes.GetCustomAttributes(true).FirstOrDefault(x => x.GetType().FullName == "System.Runtime.CompilerServices.NullableAttribute"); | ||||
|  | ||||
|   | ||||
|  | ||||
|         // var rtNullableContextAttr = mi.ReturnTypeCustomAttributes | ||||
|         //                                .GetCustomAttributes(typeof(NullableContextAttribute), true) | ||||
|         //                                .FirstOrDefault() as NullableContextAttribute | ||||
|         //                                 .FirstOrDefault() as NullableContextAttribute | ||||
|         //                                ?? nullableContextAttr; | ||||
|  | ||||
|  | ||||
|         var rtNullableContextAttr = mi.ReturnTypeCustomAttributes | ||||
|                                 .GetCustomAttributes(true).FirstOrDefault(x=>x.GetType().Name == "NullableContextAttribute") | ||||
|                                 ?? nullableContextAttr; | ||||
|  | ||||
|         var rtNullableAttrFlags = (rtNullableAttr?.GetType().GetField("NullableFlags").GetValue(rtNullableAttr) as byte[] ?? new byte[0]).ToList(); | ||||
|         var rtNullableContextAttrFlag = (byte)(rtNullableContextAttr?.GetType().GetField("Flag").GetValue(rtNullableContextAttr) ?? (byte)0); | ||||
|  | ||||
|         //var rtFlags = rtNullableAttr?.Flags?.ToList() ?? new List<byte>(); | ||||
|         //var rtFlags = ((byte[])rtNullableAttr?.NullableFlags ?? new byte[0]).ToList(); | ||||
|  | ||||
|         //if (rtFlags.Count > 0 && genericRtType == typeof(AsyncReply<>)) | ||||
|         //    rtFlags.RemoveAt(0); | ||||
|         if (rtNullableAttrFlags.Count > 0 && genericRtType == typeof(AsyncReply<>)) | ||||
|             rtNullableAttrFlags.RemoveAt(0); | ||||
|  | ||||
|         //if (rtNullableContextAttr?.Flag == 2) | ||||
|         //{ | ||||
|         //    if (rtFlags.Count == 1) | ||||
|         //        rtType.SetNotNull(rtFlags.FirstOrDefault()); | ||||
|         //    else | ||||
|         //        rtType.SetNotNull(rtFlags); | ||||
|         //} | ||||
|         //else | ||||
|         //{ | ||||
|         //    if (rtFlags.Count == 1) | ||||
|         //        rtType.SetNull(rtFlags.FirstOrDefault()); | ||||
|         //    else | ||||
|         //        rtType.SetNull(rtFlags); | ||||
|         //} | ||||
|         if (rtNullableContextAttrFlag == 2) | ||||
|         { | ||||
|             if (rtNullableAttrFlags.Count == 1) | ||||
|                 rtType.SetNotNull(rtNullableAttrFlags.FirstOrDefault()); | ||||
|             else | ||||
|                 rtType.SetNotNull(rtNullableAttrFlags); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             if (rtNullableAttrFlags.Count == 1) | ||||
|                 rtType.SetNull(rtNullableAttrFlags.FirstOrDefault()); | ||||
|             else | ||||
|                 rtType.SetNull(rtNullableAttrFlags); | ||||
|         } | ||||
|  | ||||
|         var args = mi.GetParameters(); | ||||
|  | ||||
| @@ -142,28 +157,34 @@ public class FunctionTemplate : MemberTemplate | ||||
|             if (argType == null) | ||||
|                 throw new Exception($"Unsupported type `{x.ParameterType}` in method `{type.Name}.{mi.Name}` parameter `{x.Name}`"); | ||||
|  | ||||
|             argType.Nullable = nullabilityInfoContext.Create(x).WriteState is NullabilityState.Nullable; | ||||
|             //argType.Nullable = nullabilityInfoContext.Create(x).WriteState is NullabilityState.Nullable; | ||||
|  | ||||
|             //var argNullableAttr = x.GetCustomAttribute<NullableAttribute>(true); | ||||
|             //var argNullableContextAttr = x.GetCustomAttribute<NullableContextAttribute>(true) ?? nullableContextAttr; | ||||
|  | ||||
|             var argNullableAttr = x.GetCustomAttributes(true).FirstOrDefault(x => x.GetType().FullName == "System.Runtime.CompilerServices.NullableAttribute"); | ||||
|             var argNullableContextAttr = x.GetCustomAttributes(true).FirstOrDefault(x => x.GetType().FullName == "System.Runtime.CompilerServices.NullableContextAttr"); | ||||
|   | ||||
|             //var argFlags = argNullableAttr?.Flags?.ToList() ?? new List<byte>(); | ||||
|             //var argFlags = ((byte[])argNullableAttr?.NullableFlags ?? new byte[0]).ToList(); | ||||
|  | ||||
|             var argNullableAttrFlags = (argNullableAttr?.GetType().GetField("NullableFlags").GetValue(argNullableAttr) as byte[] ?? new byte[0]).ToList(); | ||||
|             var argNullableContextAttrFlag = (byte)(argNullableAttr?.GetType().GetField("Flag").GetValue(argNullableAttr) ?? (byte)0); | ||||
|  | ||||
|             //if (argNullableContextAttr?.Flag == 2) | ||||
|             //{ | ||||
|             //    if (argFlags.Count == 1) | ||||
|             //        argType.SetNotNull(argFlags.FirstOrDefault()); | ||||
|             //    else | ||||
|             //        argType.SetNotNull(argFlags); | ||||
|             //} | ||||
|             //else | ||||
|             //{ | ||||
|             //    if (rtFlags.Count == 1) | ||||
|             //        argType.SetNull(argFlags.FirstOrDefault()); | ||||
|             //    else | ||||
|             //        argType.SetNull(argFlags); | ||||
|             //} | ||||
|             if (argNullableContextAttrFlag == 2) | ||||
|             { | ||||
|                 if (argNullableAttrFlags.Count == 1) | ||||
|                     argType.SetNotNull(argNullableAttrFlags.FirstOrDefault()); | ||||
|                 else | ||||
|                     argType.SetNotNull(argNullableAttrFlags); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (argNullableAttrFlags.Count == 1) | ||||
|                     argType.SetNull(argNullableAttrFlags.FirstOrDefault()); | ||||
|                 else | ||||
|                     argType.SetNull(argNullableAttrFlags); | ||||
|             } | ||||
|  | ||||
|             return new ArgumentTemplate() | ||||
|             { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user