public void FillPropertyValues(IScriptObjectContext acceptor, IScriptObjectContext source, string properties = null, string ignored_properties = null) { IEnumerable <string> sourceProperties; IEnumerable <string> ignoredPropCollection; if (properties == null) { IList <string> names = new List <string>(); for (int i = 0; i < source.VariablesCount(); i++) { names.Add(source.GetPublicVariable(i).Variable.Name); names.Add(source.GetPublicVariable(i).Variable.Alias); } names.Remove("ЭтотОбъект"); sourceProperties = names; } else { sourceProperties = properties.Split(',') .Select(x => x.Trim()) .Where(x => x.Length > 0) .ToArray(); } if (ignored_properties != null) { ignoredPropCollection = ignored_properties.Split(',') .Select(x => x.Trim()) .Where(x => x.Length > 0); } else { ignoredPropCollection = new string[0]; } foreach (var srcProperty in sourceProperties.Where(x => !ignoredPropCollection.Contains(x))) { try { var propIdx = acceptor.GetPublicVariable(srcProperty); var srcPropIdx = source.GetPublicVariable(srcProperty); propIdx.Set(srcPropIdx.Get()); } catch { } } }
public ScriptObjectValue(IScriptObjectContext value) { _value = value; }
public static IValue Create(IScriptObjectContext value) => new ScriptObjectValue(value);