diff --git a/src/BootstrapBlazor/Dynamic/DataTableDynamicContext.cs b/src/BootstrapBlazor/Dynamic/DataTableDynamicContext.cs index 63c002629fa..1adc9b83e91 100644 --- a/src/BootstrapBlazor/Dynamic/DataTableDynamicContext.cs +++ b/src/BootstrapBlazor/Dynamic/DataTableDynamicContext.cs @@ -75,37 +75,16 @@ public DataTableDynamicContext(DataTable table, Action GetShownColumns(col, invisibleColumns, shownColumns, hiddenColumns)); - - OnValueChanged = OnCellValueChanged; - - [ExcludeFromCodeCoverage] - Type CreateType() - { - // Emit 生成动态类 (使用缓存) - var columnNames = string.Join('|', table.Columns.Cast().Select(static c => $"{c.ColumnName}:{c.DataType.FullName}")); - var cacheKey = $"BootstrapBlazor-{nameof(DataTableDynamicContext)}-{columnNames}"; - var dynamicType = CacheManager.GetDynamicObjectTypeByName(cacheKey, cols, OnColumnCreating, out var cached); - - // 缓存命中时仍需调用回调以处理列属性 - if (cached && AddAttributesCallback != null) - { - foreach (var col in cols) - { - AddAttributesCallback?.Invoke(this, col); - } - } - - return dynamicType ?? throw new InvalidOperationException(); - } } private static bool GetShownColumns(ITableColumn col, IEnumerable? invisibleColumns, IEnumerable? shownColumns, IEnumerable? hiddenColumns) diff --git a/src/BootstrapBlazor/Services/CacheManager.cs b/src/BootstrapBlazor/Services/CacheManager.cs index 400e72a2e7c..0d459357f23 100644 --- a/src/BootstrapBlazor/Services/CacheManager.cs +++ b/src/BootstrapBlazor/Services/CacheManager.cs @@ -10,7 +10,6 @@ using System.Globalization; using System.Linq.Expressions; using System.Reflection; -using System.Reflection.Emit; #if NET8_0_OR_GREATER using System.Runtime.CompilerServices; @@ -765,18 +764,4 @@ public static object GetFormatterInvoker(Type type, Func> private static Func> InvokeFormatterAsync(Func> formatter) => new(v => formatter(v)); #endregion - - internal static Type? GetDynamicObjectTypeByName(string key, IEnumerable cols, Func>? creatingCallback, out bool cached) - { - var created = false; - var type = Instance.GetOrCreate(key, _ => - { - created = true; - return EmitHelper.CreateTypeByName($"BootstrapBlazor_{nameof(DataTableDynamicContext)}_{key}", cols, typeof(DataTableDynamicObject), creatingCallback); - }); - - // 是否从缓存中获取到的值 - cached = !created; - return type; - } } diff --git a/src/BootstrapBlazor/Utils/EmitHelper.cs b/src/BootstrapBlazor/Utils/EmitHelper.cs index 23bed85b278..1ae7798f149 100644 --- a/src/BootstrapBlazor/Utils/EmitHelper.cs +++ b/src/BootstrapBlazor/Utils/EmitHelper.cs @@ -31,16 +31,16 @@ public static class EmitHelper /// 回调委托 /// Callback delegate /// - public static Type? CreateTypeByName(string typeName, IEnumerable cols, Type? parent = null, Func>? creatingCallback = null) + public static Type CreateTypeByName(string typeName, IEnumerable cols, Type? parent = null, Func>? creatingCallback = null) { var typeBuilder = CreateTypeBuilderByName(typeName, parent); - foreach (var col in cols) { var attributeBuilds = creatingCallback?.Invoke(col); typeBuilder.CreateProperty(col, attributeBuilds); } - return typeBuilder.CreateType(); + + return typeBuilder.CreateType()!; } private static TypeBuilder CreateTypeBuilderByName(string typeName, Type? parent = null)