فهرست منبع

拆分树形实体接口,增加ITreeChildren和ITreeParent的单独实现

懒得勤快 4 سال پیش
والد
کامیت
f7c6db9adc

+ 3 - 3
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -7,7 +7,7 @@
     <LangVersion>9.0</LangVersion>
     <LangVersion>9.0</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
     <CodeAnalysisRuleSet />
-    <Version>2.4.2.2</Version>
+    <Version>2.4.2.3</Version>
     <Authors>懒得勤快</Authors>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库</Description>
     <Description>Masuit.Tools基础公共库</Description>
     <Copyright>懒得勤快,长空X</Copyright>
     <Copyright>懒得勤快,长空X</Copyright>
@@ -20,9 +20,9 @@
     <RepositoryType>Github</RepositoryType>
     <RepositoryType>Github</RepositoryType>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
     <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
     <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
-    <FileVersion>2.4.2.2</FileVersion>
+    <FileVersion>2.4.2.3</FileVersion>
     <Company>masuit.com</Company>
     <Company>masuit.com</Company>
-    <AssemblyVersion>2.4.2.2</AssemblyVersion>
+    <AssemblyVersion>2.4.2.3</AssemblyVersion>
     <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
     <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
     <EmbedUntrackedSources>true</EmbedUntrackedSources>
     <EmbedUntrackedSources>true</EmbedUntrackedSources>
     <IncludeSymbols>true</IncludeSymbols>
     <IncludeSymbols>true</IncludeSymbols>

+ 19 - 5
Masuit.Tools.Abstractions/Models/ITree.cs

@@ -6,21 +6,35 @@ namespace Masuit.Tools.Models
     /// 树形实体接口
     /// 树形实体接口
     /// </summary>
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <typeparam name="T"></typeparam>
-    public interface ITree<T> where T : ITree<T>
+    public interface ITree<T> : ITreeParent<T>, ITreeChildren<T>
     {
     {
         /// <summary>
         /// <summary>
         /// 名字
         /// 名字
         /// </summary>
         /// </summary>
         string Name { get; set; }
         string Name { get; set; }
+    }
 
 
+    /// <summary>
+    /// 带子级的树形实体接口
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public interface ITreeChildren<T>
+    {
         /// <summary>
         /// <summary>
-        /// 父节点
+        /// 子级
         /// </summary>
         /// </summary>
-        T Parent { get; set; }
+        ICollection<T> Children { get; set; }
+    }
 
 
+    /// <summary>
+    /// 带父节点的树形实体接口
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public interface ITreeParent<T>
+    {
         /// <summary>
         /// <summary>
-        /// 子级
+        /// 父节点
         /// </summary>
         /// </summary>
-        ICollection<T> Children { get; set; }
+        T Parent { get; set; }
     }
     }
 }
 }

+ 11 - 11
Masuit.Tools.Abstractions/Models/TreeExtensions.cs

@@ -16,7 +16,7 @@ namespace Masuit.Tools.Models
         /// <param name="items"></param>
         /// <param name="items"></param>
         /// <param name="func"></param>
         /// <param name="func"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public static IEnumerable<T> Filter<T>(this IEnumerable<T> items, Func<T, bool> func) where T : ITree<T>
+        public static IEnumerable<T> Filter<T>(this IEnumerable<T> items, Func<T, bool> func) where T : ITreeChildren<T>
         {
         {
             var results = new List<T>();
             var results = new List<T>();
             foreach (var item in items.Where(i => i != null))
             foreach (var item in items.Where(i => i != null))
@@ -37,9 +37,9 @@ namespace Masuit.Tools.Models
         /// <param name="item"></param>
         /// <param name="item"></param>
         /// <param name="func"></param>
         /// <param name="func"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public static IEnumerable<T> Filter<T>(this T item, Func<T, bool> func) where T : ITree<T>
+        public static IEnumerable<T> Filter<T>(this T item, Func<T, bool> func) where T : ITreeChildren<T>
         {
         {
-            return (new[] { item }).Filter(func);
+            return new[] { item }.Filter(func);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -48,7 +48,7 @@ namespace Masuit.Tools.Models
         /// <typeparam name="T"></typeparam>
         /// <typeparam name="T"></typeparam>
         /// <param name="items"></param>
         /// <param name="items"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public static IEnumerable<T> Flatten<T>(this IEnumerable<T> items) where T : ITree<T>
+        public static IEnumerable<T> Flatten<T>(this IEnumerable<T> items) where T : ITreeChildren<T>
         {
         {
             var result = new List<T>();
             var result = new List<T>();
             foreach (var item in items)
             foreach (var item in items)
@@ -62,27 +62,27 @@ namespace Masuit.Tools.Models
         /// <summary>
         /// <summary>
         /// 所有子级
         /// 所有子级
         /// </summary>
         /// </summary>
-        public static ICollection<T> AllChildren<T>(this ITree<T> tree) where T : ITree<T> => GetChildren(tree);
+        public static ICollection<T> AllChildren<T>(this ITreeChildren<T> tree) where T : ITreeChildren<T> => GetChildren(tree);
 
 
         /// <summary>
         /// <summary>
         /// 所有父级
         /// 所有父级
         /// </summary>
         /// </summary>
-        public static ICollection<T> AllParent<T>(this ITree<T> tree) where T : ITree<T> => GetParents(tree);
+        public static ICollection<T> AllParent<T>(this ITreeParent<T> tree) where T : ITreeParent<T> => GetParents(tree);
 
 
         /// <summary>
         /// <summary>
         /// 是否是根节点
         /// 是否是根节点
         /// </summary>
         /// </summary>
-        public static bool IsRoot<T>(this ITree<T> tree) where T : ITree<T> => tree.Parent == null;
+        public static bool IsRoot<T>(this ITreeParent<T> tree) where T : ITreeParent<T> => tree.Parent == null;
 
 
         /// <summary>
         /// <summary>
         /// 是否是叶子节点
         /// 是否是叶子节点
         /// </summary>
         /// </summary>
-        public static bool IsLeaf<T>(this ITree<T> tree) where T : ITree<T> => tree.Children.Count == 0;
+        public static bool IsLeaf<T>(this ITreeChildren<T> tree) where T : ITreeChildren<T> => tree.Children?.Count == 0;
 
 
         /// <summary>
         /// <summary>
         /// 深度层级
         /// 深度层级
         /// </summary>
         /// </summary>
-        public static int Level<T>(this ITree<T> tree) where T : ITree<T> => IsRoot(tree) ? 1 : Level(tree.Parent) + 1;
+        public static int Level<T>(this ITreeParent<T> tree) where T : ITreeParent<T> => IsRoot(tree) ? 1 : Level(tree.Parent) + 1;
 
 
         /// <summary>
         /// <summary>
         /// 节点路径(UNIX路径格式,以“/”分隔)
         /// 节点路径(UNIX路径格式,以“/”分隔)
@@ -96,7 +96,7 @@ namespace Masuit.Tools.Models
         /// </summary>
         /// </summary>
         /// <param name="t"></param>
         /// <param name="t"></param>
         /// <returns></returns>
         /// <returns></returns>
-        private static List<T> GetChildren<T>(ITree<T> t) where T : ITree<T>
+        private static List<T> GetChildren<T>(ITreeChildren<T> t) where T : ITreeChildren<T>
         {
         {
             return t.Children.Union(t.Children.Where(c => c.Children.Any()).SelectMany(tree => GetChildren(tree))).ToList();
             return t.Children.Union(t.Children.Where(c => c.Children.Any()).SelectMany(tree => GetChildren(tree))).ToList();
         }
         }
@@ -106,7 +106,7 @@ namespace Masuit.Tools.Models
         /// </summary>
         /// </summary>
         /// <param name="t"></param>
         /// <param name="t"></param>
         /// <returns></returns>
         /// <returns></returns>
-        private static List<T> GetParents<T>(ITree<T> t) where T : ITree<T>
+        private static List<T> GetParents<T>(ITreeParent<T> t) where T : ITreeParent<T>
         {
         {
             var list = new List<T>() { t.Parent };
             var list = new List<T>() { t.Parent };
             return t.Parent != null ? list.Union(GetParents(t.Parent)).ToList() : list;
             return t.Parent != null ? list.Union(GetParents(t.Parent)).ToList() : list;

+ 3 - 3
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -20,10 +20,10 @@
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType>Github</RepositoryType>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.4.2.2</Version>
-        <FileVersion>2.4.2.2</FileVersion>
+        <Version>2.4.2.3</Version>
+        <FileVersion>2.4.2.3</FileVersion>
         <Company>masuit.com</Company>
         <Company>masuit.com</Company>
-        <AssemblyVersion>2.4.2.2</AssemblyVersion>
+        <AssemblyVersion>2.4.2.3</AssemblyVersion>
         <Authors>懒得勤快X</Authors>
         <Authors>懒得勤快X</Authors>
         <RepositoryUrl>https://github.com/ldqk/Masuit.Tools</RepositoryUrl>
         <RepositoryUrl>https://github.com/ldqk/Masuit.Tools</RepositoryUrl>
         <EmbedUntrackedSources>true</EmbedUntrackedSources>
         <EmbedUntrackedSources>true</EmbedUntrackedSources>

BIN
Masuit.Tools/Properties/AssemblyInfo.cs


+ 1 - 1
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <!--*-->
     <id>Masuit.Tools.Net</id>
     <id>Masuit.Tools.Net</id>
     <!--*-->
     <!--*-->
-    <version>2.4.2.2</version>
+    <version>2.4.2.3</version>
     <title>Masuit.Tools</title>
     <title>Masuit.Tools</title>
     <!--*-->
     <!--*-->
     <authors>masuit.com</authors>
     <authors>masuit.com</authors>

+ 2 - 8
NetCoreTest/Program.cs

@@ -1,5 +1,4 @@
-using Masuit.Tools;
-using Masuit.Tools.Models;
+using Masuit.Tools.Models;
 using Masuit.Tools.Reflection;
 using Masuit.Tools.Reflection;
 using Masuit.Tools.Security;
 using Masuit.Tools.Security;
 using Microsoft.AspNetCore;
 using Microsoft.AspNetCore;
@@ -7,7 +6,6 @@ using Microsoft.AspNetCore.Hosting;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.ComponentModel;
-using System.IO;
 
 
 namespace NetCoreTest
 namespace NetCoreTest
 {
 {
@@ -15,10 +13,6 @@ namespace NetCoreTest
     {
     {
         public static void Main(string[] args)
         public static void Main(string[] args)
         {
         {
-            var fs = File.OpenRead(@"E:\下载\BlazorSamples.7z");
-            var bytes = fs.ToArrayAsync().Result;
-            Console.WriteLine(bytes.Length);
-            Console.ReadKey();
             var myClass = new MyClass()
             var myClass = new MyClass()
             {
             {
                 MyProperty1 = 1,
                 MyProperty1 = 1,
@@ -70,6 +64,6 @@ namespace NetCoreTest
         /// <summary>
         /// <summary>
         /// 子级
         /// 子级
         /// </summary>
         /// </summary>
-        public ICollection<MyClass> Children { get; set; }
+        public ICollection<MyClass> Children { get; set; } = new List<MyClass>();
     }
     }
 }
 }