基于Odin的常见小工具ScriptableObjectCreator存在ToHashSet二义性时的解决方案

注:提供给对链式调用不熟悉的人的解决方案

网上随处可见的基于Odin的小工具ScriptableObjectCreator如果发生【以下方法或属性之间的调用具有二义性:“Sirenix.Utilities.LinqExtensions.ToHashSet<T>(System.Collections.Generic.IEnumerable<T>)”和“System.Linq.Enumerable.ToHashSet<TSource>(System.Collections.Generic.IEnumerable<TSource>”】

static HashSet<Type> scriptableObjectTypes = AssemblyUtilities.GetTypes(AssemblyTypeFlags.CustomTypes)
        .Where(t => t.IsClass &&
            typeof(ScriptableObject).IsAssignableFrom(t) &&
            !typeof(EditorWindow).IsAssignableFrom(t) &&
            !typeof(Editor).IsAssignableFrom(t)).ToHashSet();

把ToHashSet提出来,限定调用

static HashSet<Type> scriptableObjectTypes = System.Linq.Enumerable.ToHashSet(AssemblyUtilities.GetTypes(AssemblyTypeFlags.CustomTypes)
        .Where(t => t.IsClass &&
            typeof(ScriptableObject).IsAssignableFrom(t) &&
            !typeof(EditorWindow).IsAssignableFrom(t) &&
            !typeof(Editor).IsAssignableFrom(t)));

 

posted @ 2023-04-07 02:45  rkmao  阅读(103)  评论(0编辑  收藏  举报