/// 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); } }
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); }