From 9c26f405c3de8de9ec391a3a75095169fc8c9f35 Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期五, 03 七月 2020 09:20:52 +0800
Subject: [PATCH] 获取设置数据

---
 src/Bro.Common.Model/Helper/PropertyConvertHelper.cs |   52 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 40 insertions(+), 12 deletions(-)

diff --git a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
index 1f56ef7..3117d1e 100644
--- a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
+++ b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
@@ -1,5 +1,7 @@
-锘縰sing Bro.Common.Factory;
+锘縰sing Autofac;
+using Bro.Common.Factory;
 using Bro.Common.Interface;
+using Bro.Common.Model;
 using Newtonsoft.Json;
 using System;
 using System.Collections;
@@ -112,7 +114,7 @@
         //    set => hash = value;
         //}
 
-        public abstract Hashtable GetConvertHash();
+        public abstract Hashtable GetConvertHash(ITypeDescriptorContext context);
 
         public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
         {
@@ -121,7 +123,7 @@
 
         public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
         {
-            Hash = GetConvertHash();
+            Hash = GetConvertHash(context);
 
             string[] ids = new string[Hash.Values.Count];
             int i = 0;
@@ -182,6 +184,13 @@
                         }
                         return "";
                     }
+
+                    //foreach (DictionaryEntry myDE in Hash)
+                    //{
+                    //    if (myDE.Key.Equals(v))
+                    //        return myDE.Value;
+                    //}
+                    return null;
                 }
             }
             catch (Exception)
@@ -216,7 +225,26 @@
                 {
                     return (value as IComplexDisplay).GetDisplayText();
                 }
-                else
+                else if (value is IEnumerable enumList)
+                {
+                    string display = "";
+                    bool iComplexDisplayMatch = false;
+                    var enumrator = enumList.GetEnumerator();
+                    while (enumrator.MoveNext())
+                    {
+                        if (enumrator.Current is IComplexDisplay d)
+                        {
+                            iComplexDisplayMatch = true;
+                            display += $"{d.GetDisplayText()} ";
+                        }
+                    }
+
+                    if (iComplexDisplayMatch)
+                    {
+                        return display.Trim();
+                    }
+                }
+
                 {
                     return JsonConvert.SerializeObject(value);
                 }
@@ -571,7 +599,7 @@
                 }
 
                 form.ShowDialog();
-                List<string> returnStrs = tbox.Text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
+                List<string> returnStrs = tbox.Text.Split(new char[] { '\r', '\n', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
 
                 switch (typeof(T).Name)
                 {
@@ -624,10 +652,10 @@
             return form;
         }
 
-        //protected override object CreateInstance(Type itemType)
-        //{
-        //    return base.CreateInstance(itemType);
-        //}
+        protected override object CreateInstance(Type itemType)
+        {
+            return base.CreateInstance(itemType);
+        }
 
         //protected override object[] GetItems(object editValue)
         //{
@@ -816,7 +844,7 @@
         }
     }
 
-    public class DeviceTypeConverter : StringConverter 
+    public class DeviceTypeConverter : StringConverter
     {
         public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
         {
@@ -847,7 +875,7 @@
             return new StandardValuesCollection(devices);
         }
     }
-    
+
     public class DeviceInitialConfigEditor<T> : UITypeEditor where T : class, IInitialConfig
     {
         public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
@@ -895,7 +923,7 @@
 
             return base.EditValue(context, provider, value);
         }
-    }
+    }    
     #endregion
 
 }

--
Gitblit v1.8.0