不能在泛型方法中将List转换为IEnumerable



我想在数据库的string列中存储一些集合属性。其中一些是IEnumerable<>,一些是List<>

使用Ef core,我创建了这样一个扩展方法:

public static void StringWithStyleConversion<T>(this PropertyBuilder<T> builder)
where T : IEnumerable<StringWithStyle>
{
builder.HasConversion(
v => JsonSerializer.Serialize(v, (JsonSerializerOptions)null),
v => JsonSerializer.Deserialize<T>(v, (JsonSerializerOptions)null)
,
new ValueComparer<T>(
(arr1, arr2) => arr1.Count() == arr2.Count() && !arr1.Except(arr2).Any(),
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
c => new List<StringWithStyle>(c))
);
}

但是我得到一个错误:

Cannot implicitly convert type System.Collections.Generic.List<TypiconOnline.Domain.ItemTypes.StringWithStyle>' to 'T'

:

c => new List<StringWithStyle>(c))

你能帮我一下吗,这个问题怎么解决?

对不起,我已经找到答案了

c => (T) Convert.ChangeType(new List<StringWithStyle>(c)), typeof (T))

它不工作。因为List<StringWithStyle>没有实现IConvertible

最新更新