Browse Source

fix typo, add immutable interface.

0x0001F36D 5 years ago
parent
commit
3ef814ba89

+ 3 - 3
src/Yuuna.Contracts/GroupManager.cs

@@ -19,7 +19,7 @@
 
             [DebuggerNonUserCode]
             [MethodImpl(MethodImplOptions.AggressiveInlining)]
-            internal static void EnsureIsValid(string key)
+            internal static void ValidateGroupKey(string key)
             {
                 if (string.IsNullOrWhiteSpace(key))
                     throw new ArgumentNullException(nameof(key));
@@ -32,7 +32,7 @@
             /// <returns></returns>
             public IGroup Define(string key)
             {
-                EnsureIsValid(key);
+                ValidateGroupKey(key);
 
                 lock (this._lock)
                 {
@@ -64,7 +64,7 @@
             /// <returns></returns>
             public bool TryGetGroup(string key, out IGroup group)
             {
-                EnsureIsValid(key);
+                ValidateGroupKey(key);
                 lock (this._lock)
                 {
                     return this._groups.TryGetValue(key, out group);

+ 21 - 0
src/Yuuna.Contracts/Linq/IImmutable.cs

@@ -0,0 +1,21 @@
+
+namespace Yuuna.Contracts.Linq
+{
+    using System;
+    using System.Collections.Generic;
+    using System.Collections.Immutable;
+    using System.Text;
+
+    /// <summary>
+    /// 表示可轉換為不可變集合物件。
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public interface IImmutable<T>
+    {
+        /// <summary>
+        /// 轉換成不可變清單以使用 Linq 。
+        /// </summary>
+        /// <returns></returns>
+        IImmutableList<T> ToImmutable();
+    }
+}

+ 1 - 1
src/Yuuna.Contracts/Optimization/DefaultStrategy.cs

@@ -5,7 +5,7 @@ namespace Yuuna.Contracts.Optimization
 
     public sealed class DefaultStrategy : StrategyBase
     {
-        public override string Name => "Defaule";
+        public override string Name => nameof(ScoreComparer.Default);
 
 
         protected override IComparer<IScore> Comparer => ScoreComparer.Default;

+ 3 - 3
src/Yuuna.Contracts/Patterns/IGrammar.cs

@@ -3,15 +3,15 @@ namespace Yuuna.Contracts.Patterns
 {
     using System;
     using System.Collections.Immutable;
+    using Yuuna.Contracts.Linq;
     using Yuuna.Contracts.Semantics;
 
-    public interface IGrammar : IEquatable<IGrammar>
+    public interface IGrammar : IEquatable<IGrammar>, IImmutable<IGroup>
     {
         int Count { get; }
 
         IImmutableList<string> SequentialKeys { get; }
-
-        IImmutableList<IGroup> ToImmutable();
+         
     }
 
 

+ 3 - 3
src/Yuuna.Contracts/Patterns/IGrammarSet.cs

@@ -2,11 +2,11 @@
 namespace Yuuna.Contracts.Patterns
 {
     using System.Collections.Immutable;
+    using Yuuna.Contracts.Linq;
 
-    public interface IGrammarSet
+    public interface IGrammarSet : IImmutable<IGrammar>
     {
-        bool TryGet(IGrammar grammar, out Behaviour behaviour);
-        IImmutableList<IGrammar> ToImmutable();
+        bool TryGet(IGrammar grammar, out Behaviour behaviour); 
     }
 
 }

+ 3 - 7
src/Yuuna.Contracts/Semantics/IGroup.cs

@@ -3,11 +3,12 @@
     using System;
     using System.Collections.Generic;
     using System.Collections.Immutable;
+    using Yuuna.Contracts.Linq;
 
     /// <summary>
     /// 群體物件。用來存放相同性質類型的同義詞物件。
     /// </summary>
-    public interface IGroup : IEquatable<IGroup>
+    public interface IGroup : IEquatable<IGroup>, IImmutable<ISynonym>
     {
 
         /// <summary>
@@ -33,11 +34,6 @@
         /// <param name="synonyms">同義詞。</param>
         /// <returns></returns>
         bool TryGetSynonym(string word, out ISynonym synonyms);
-
-        /// <summary>
-        /// 轉換成不可變清單以使用 Linq 。
-        /// </summary>
-        /// <returns></returns>
-        IImmutableList<ISynonym> ToImmutable();
+         
     }
 }

+ 2 - 2
src/Yuuna.Contracts/Semantics/ISynosym.cs → src/Yuuna.Contracts/Semantics/ISynonym.cs

@@ -4,11 +4,12 @@ namespace Yuuna.Contracts.Semantics
     using System;
     using System.Collections.Generic;
     using System.Collections.Immutable;
+    using Yuuna.Contracts.Linq;
 
     /// <summary>
     /// 同義詞物件
     /// </summary>
-    public interface ISynonym : IEquatable<IEnumerable<string>>, IEquatable<string>, IEquatable<ISynonym>
+    public interface ISynonym : IEquatable<IEnumerable<string>>, IEquatable<string>, IEquatable<ISynonym>, IImmutable<string>
     {
         /// <summary>
         /// 表示該物件隸屬的群體。
@@ -33,7 +34,6 @@ namespace Yuuna.Contracts.Semantics
         /// <returns></returns>
         void AddRange(IEnumerable<string> words);
 
-        IImmutableList<string> ToImmutable();
     }
 
 }