示例#1
0
 /// we cannot have a reference to System.Web for Session here, so we use a delegate
 public static void SetFunctionForRetrievingCurrentObjectFromWebSession(
     ObjectSetter setter,
     ObjectGetter getter)
 {
     ObjDelegateSet = setter;
     ObjDelegateGet = getter;
 }
示例#2
0
 /// we cannot have a reference to System.Web for Session here, so we use a delegate
 public static void SetFunctionForRetrievingCurrentObjectFromWebSession(
     ObjectSetter setter,
     ObjectGetter getter)
 {
     ObjDelegateSet = setter;
     ObjDelegateGet = getter;
 }
        private SetterMethod ReadReferencedObject(IDataReader reader, ObjectSetter setter)
        {
            var cycleUtility = CycleUtility.GetInstance(reader);
            int id           = reader.ReadReference();

            if (id >= 0)
            {
                return((obj) => setter(obj, cycleUtility.FromReference(id)));
            }
            else
            {
                return(null);
            }
        }
示例#4
0
        private void ReplaceAssetUrl(IReadOnlyDictionary <string, IJsonValue> source, ObjectSetter setter)
        {
            List <(string, string)>?replacements = null;

            foreach (var(key, value) in source)
            {
                switch (value)
                {
                case JsonString s:
                {
                    var newValue = s.Value;

                    newValue = newValue.Replace(assetsUrlOld !.AssetsApp, assetsUrlNew !.AssetsApp);

                    if (!ReferenceEquals(newValue, s.Value))
                    {
                        replacements ??= new List <(string, string)>();
                        replacements.Add((key, newValue));
                        break;
                    }

                    newValue = newValue.Replace(assetsUrlOld !.Assets, assetsUrlNew !.Assets);

                    if (!ReferenceEquals(newValue, s.Value))
                    {
                        replacements ??= new List <(string, string)>();
                        replacements.Add((key, newValue));
                        break;
                    }
                }

                break;

                case JsonArray arr:
                    ReplaceAssetUrl(arr);
                    break;

                case JsonObject obj:
                    ReplaceAssetUrl(obj, JsonSetter);
                    break;
                }
            }

            if (replacements != null)
            {
                foreach (var(key, newValue) in replacements)
                {
                    setter(source, key, JsonValue.Create(newValue));
                }
            }
        }
 public static void OpenWindow()
 {
     window = (ObjectSetter)EditorWindow.GetWindow(typeof(ObjectSetter)); //create a window
     window.titleContent = new GUIContent("Object Setter");               //set a window title
 }
        public void FluentSetterTest()
        {
            var type = typeof(NiceAct);
            var act  = new NiceAct()
            {
                Name     = "Hu",
                Age      = 22,
                Country  = Country.China,
                Birthday = DateTime.Today
            };

            var d = new Dictionary <string, object>();

            d["Name"]     = "Ax";
            d["Age"]      = 10086;
            d["Country"]  = Country.China;
            d["Birthday"] = DateTime.Today.AddDays(10);
            d["IsValid"]  = true;

            var s1 = ObjectSetter.Type(type).Instance(act);
            var s2 = ObjectSetter.Type(type).InitialValues(d);
            var s3 = ObjectSetter.Type(type).NewInstance();
            var s4 = ObjectSetter.Type <NiceAct>().Instance(act);
            var s5 = ObjectSetter.Type <NiceAct>().InitialValues(d);
            var s6 = ObjectSetter.Type <NiceAct>().NewInstance();

            var s7  = ObjectSetter.Type(type).Value("Name");
            var s8  = ObjectSetter.Type <NiceAct>().Value("Name");
            var s9  = ObjectSetter.Type <NiceAct>().Value(t => t.Name);
            var s10 = ObjectSetter.Type <NiceAct>().Value <string>(t => t.Name);

            s1.SetValue("Name", "LL0");
            Assert.Equal("LL0", ((NiceAct)s1.Instance).Name);
            Assert.Equal("LL0", act.Name);

            s2.SetValue("Name", "LL1");
            Assert.Equal("LL1", ((NiceAct)s2.Instance).Name);
            var act2 = (NiceAct)s2.Instance;

            Assert.Equal("LL1", act2.Name);

            s3.SetValue("Name", "LL2");
            Assert.Equal("LL2", ((NiceAct)s3.Instance).Name);
            var act3 = (NiceAct)s3.Instance;

            Assert.Equal("LL2", act3.Name);

            s4.SetValue("Name", "LL3");
            Assert.Equal("LL3", ((NiceAct)s4.Instance).Name);
            Assert.Equal("LL3", act.Name);

            s5.SetValue("Name", "LL4");
            Assert.Equal("LL4", ((NiceAct)s5.Instance).Name);
            var act5 = (NiceAct)s5.Instance;

            Assert.Equal("LL4", act5.Name);

            s6.SetValue("Name", "LL5");
            Assert.Equal("LL5", ((NiceAct)s6.Instance).Name);
            var act6 = (NiceAct)s6.Instance;

            Assert.Equal("LL5", act6.Name);

            s7.Instance(act).Value("LL6");
            Assert.Equal("LL6", act.Name);

            s8.Instance(act).Value("LL7");
            Assert.Equal("LL7", act.Name);

            s9.Instance(act).Value("LL8");
            Assert.Equal("LL8", act.Name);

            s10.Instance(act).Value("LL9");
            Assert.Equal("LL9", act.Name);
        }