From b429bf6650fb29bd2e012d18204ef0315edf7446 Mon Sep 17 00:00:00 2001 From: JKamsker Date: Wed, 18 Dec 2024 19:54:25 +0100 Subject: [PATCH] Add support for ignoring compiler generated properties --- TypeSupport/TypeSupport/Extensions/PropertyOptions.cs | 4 ++++ TypeSupport/TypeSupport/Extensions/TypeExtensions.cs | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/TypeSupport/TypeSupport/Extensions/PropertyOptions.cs b/TypeSupport/TypeSupport/Extensions/PropertyOptions.cs index 6c4161d..05ca848 100644 --- a/TypeSupport/TypeSupport/Extensions/PropertyOptions.cs +++ b/TypeSupport/TypeSupport/Extensions/PropertyOptions.cs @@ -32,5 +32,9 @@ public enum PropertyOptions : byte /// Properties that contain a collection indexer /// HasIndexer = 16, + /// + /// Do not include compiler generated types + /// + NoCompilerGenerated = 32, } } diff --git a/TypeSupport/TypeSupport/Extensions/TypeExtensions.cs b/TypeSupport/TypeSupport/Extensions/TypeExtensions.cs index 9e94ab4..8e8d87f 100644 --- a/TypeSupport/TypeSupport/Extensions/TypeExtensions.cs +++ b/TypeSupport/TypeSupport/Extensions/TypeExtensions.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Runtime.CompilerServices; namespace TypeSupport.Extensions { @@ -65,7 +66,11 @@ public static ICollection GetProperties(this Type type, Proper if (options.HasFlag(PropertyOptions.HasIndexer)) returnProperties = returnProperties.Where(x => x.GetIndexParameters().Any()); + if (options.HasFlag(PropertyOptions.NoCompilerGenerated)) + returnProperties = returnProperties.Where(x => !x.GetGetMethod(true).IsDefined(typeof(CompilerGeneratedAttribute), true)); + return returnProperties + .Where(x => !(x.Name == "EqualityContract" && x.PropertyType == typeof(Type))) .Select(x => new ExtendedProperty(x, propogateTypeSupportOptions)).ToList(); }