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 { }
            }
        }
예제 #2
0
 public ScriptObjectValue(IScriptObjectContext value)
 {
     _value = value;
 }
예제 #3
0
 public static IValue Create(IScriptObjectContext value) => new ScriptObjectValue(value);