0x0001F36D 5 năm trước cách đây
mục cha
commit
3955d1dc0b

+ 5 - 1
src/Yuuna.Contracts/Modules/ModuleBase.cs

@@ -17,9 +17,13 @@ namespace Yuuna.Contracts.Modules
         /// </summary> 
         public ModuleMetadataAttribute Metadata { get; }
 
+        public Guid Id { get; }
+
         public ModuleBase()
         {
-            this.Metadata = ModuleMetadataAttribute.GetMetadata(this.GetType());
+            var t = this.GetType();
+            this.Id = t.GUID;// Guid.NewGuid();
+            this.Metadata = ModuleMetadataAttribute.GetMetadata(t);
         }
 
         public bool Initialized { get; private set; }

+ 1 - 1
src/Yuuna.Contracts/Patterns/IPattern.cs

@@ -12,7 +12,7 @@ namespace Yuuna.Contracts.Patterns
 
     public interface IPattern : IEquatable<IPattern>, IImmutable<IGroup>
     {
-        ModuleBase Owner { get; }
+        Guid Owner { get; }
 
         int Count { get; }
 

+ 3 - 2
src/Yuuna.Contracts/Patterns/Pattern.cs

@@ -3,6 +3,7 @@
 
 namespace Yuuna.Contracts.Patterns
 {
+    using System;
     using System.Collections.Immutable;
     using System.Diagnostics;
     using System.Linq;
@@ -26,13 +27,13 @@ namespace Yuuna.Contracts.Patterns
 
         public IImmutableList<string> SequentialKeys { get; private set; }
 
-        public ModuleBase Owner { get; }
+        public Guid Owner { get; }
 
         internal Pattern(ModuleBase owner)
         {
             this._keyBuilder = ImmutableArray.CreateBuilder<string>();
             this._groupBuilder = ImmutableArray.CreateBuilder<IGroup>();
-            this.Owner = owner;
+            this.Owner = owner.Id;
         }
 
         public bool Equals(IPattern other)

+ 4 - 4
src/Yuuna/Actor.cs

@@ -75,8 +75,7 @@ namespace Yuuna
             }
             condition = default;
             return false;
-        }
-        //public override string ToString() => (this._words[0].Value + " / " + this._words[1].Value).ToString();
+        } 
     }
 
     public class Actor
@@ -163,7 +162,7 @@ namespace Yuuna
                         {
                             if (type.Equals(Antonym.TypeKinds.Positive))
                             {
-                                single.Pattern.Owner.Patterns.TryGet(single.Pattern, out var bag);
+                                this._moduleProxies.First(x=>x.Id.Equals(single.Pattern.Owner)).Patterns.TryGet(single.Pattern, out var bag);
                                 var r = bag.Invoke(single);
                                 this._session.Clear();
                                 return r;
@@ -202,7 +201,8 @@ namespace Yuuna
                     case AlternativeStatus.Optimal:
                         {
                             var single = alternative.Matches[0];
-                            single.Pattern.Owner.Patterns.TryGet(single.Pattern, out var bag);
+                            this._moduleProxies.First(x=>x.Id.Equals(single.Pattern.Owner))
+                           .Patterns.TryGet(single.Pattern, out var bag);
                             var r = bag.Invoke(single);
                             return r;
                         }

+ 3 - 0
src/Yuuna/Plugins/ModuleCoupler.cs

@@ -32,6 +32,7 @@ namespace Yuuna
                             if (this._module.TryGetTarget(out var m))
                             {
                                 this.Metadata = m.Metadata;
+                                this.Id = m.Id;
                             }
                             break;
                         }
@@ -41,6 +42,8 @@ namespace Yuuna
             }
         }
 
+        public Guid Id { get; }
+
         public IPatternSet Patterns { get; private set; }
         public IModuleMetadata Metadata { get; }