예제 #1
0
 public ExpressionContainer(string name, MyExpression expression)
 {
     this.Id          = Guid.NewGuid();
     this.DateCreated = DateTime.Now;
     this.Name        = name;
     this.DateModify  = DateTime.Now;
     this.Expression  = expression;
 }
        public void ChangeExpression(ExpressionContainer exp, MyExpression newExpression)
        {
            rw.EnterWriteLock();

            try
            {
                exp.Expression = newExpression;
                Thread.Sleep(5000);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                rw.ExitWriteLock();
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            List <object> assemblyObjects = new List <object>();

            string dir = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()));

            string[] paths = Directory.GetFiles(dir, "Expressions.*.dll");

            foreach (string path in paths)
            {
                var assembly = Assembly.LoadFrom(path);

                List <Type> assemblyTypes = assembly.GetTypes().Where(t => Attribute.IsDefined(t, typeof(ExportClass))).ToList();
                assemblyTypes.ForEach(t =>
                {
                    var instance = Activator.CreateInstance(t);
                    assemblyObjects.Add(instance);
                });
            }

            assemblyObjects.ForEach(o =>
            {
                o.GetType().GetProperty("Mass").SetValue(o, (ParametarExpression)"Mass");
                o.GetType().GetProperty("Height").SetValue(o, (ParametarExpression)"Height");
            });

            List <Parametar> lista = new List <Parametar>
            {
                new Parametar("Mass", 100),
                new Parametar("Height", 1.9)
            };

            assemblyObjects.ForEach(o =>
            {
                List <PropertyInfo> properties = o.GetType().GetProperties().Where(t =>
                                                                                   Attribute.IsDefined(t, typeof(ExportProperty))).ToList();

                properties.ForEach(property =>
                {
                    MyExpression exp = (MyExpression)property.GetValue(o);
                    Console.WriteLine(exp.Compile()(lista));
                });
            });
        }
        public MyExpression Manipulate()
        {
            MyExpression s = (ConstExpression)0;

            if (lst.Capacity != 0)
            {
                int br = 0;
                foreach (MyExpression exp in lst)
                {
                    s = s + exp;
                    br++;
                }
                return(s / (ConstExpression)br);
            }
            else
            {
                return(s);
            }
        }
예제 #5
0
        public MyExpression Manipulate()
        {
            var instanca = new AverageManipulator(this.lst);

            MyExpression s = (ConstExpression)0;

            if (this.lst != null)
            {
                int br = 0;

                foreach (MyExpression exp in Lst)
                {
                    s = s + ((exp - instanca.Manipulate()) * (exp - instanca.Manipulate()));
                    br++;
                }
                return(s / (ConstExpression)(br - 1));
            }
            else
            {
                return(s);
            }
        }
예제 #6
0
 static double Calculate(MyExpression expression) => expression switch
 {
     ("+", var x, var y) => x + y,
예제 #7
0
 public override void Recalculate()
 {
     MyResult = (T)MyExpression.Evaluate();
 }
예제 #8
0
 static double Calculate(MyExpression expression) => expression switch
 {
     { Operand : "+", X : var x, Y : var y } => x + y,
예제 #9
0
 public static void Printf(this MyExpression exp)
 {
     Console.WriteLine(exp.GetString());
 }