private void GuessType(object param, IEnumerable vals, object type)
        {
            if (param == null)
            {
                throw new ArgumentNullException("param", "Type can not be guessed for a null value."); // Use 'nameof' expression
            }

            if (type == null)
            {
                throw new ArgumentNullException(string.Format("Empty type '{0}'", type.GetType())); // Use string interpolation + possible NRE
            }

            if (vals == null)
            {
                throw new ArgumentNullException("vals"); // Use 'nameof' expression
            }

            if (!(param.ToString() == "check")) // Simplify negative equality expression
            {
            }

            if (type == typeof(int)) // Possible unintended reference comparison
            {
                // Source: http://stackoverflow.com/questions/9234009/c-sharp-type-comparison-type-equals-vs-operator
                Type type = new TypeDelegator(typeof(int));  // Merge variables
                Console.WriteLine(type.Equals(typeof(int))); // Check for reference equality instead
            }

            bool serializable = (type != null && type is Abstraction); // Merge sequential checks
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;
            List <Worker> list = new List <Worker>();

            list.Add(new Worker(0, "Dima", "Home"));
            list.Add(new Worker(20, "Dima2", "Home2"));
            list.Add(new Worker(330, "Dima3", "Home3"));
            SaveAsXmlFormat(list, "data.xml");
            LoadFromXmlFormat(ref list, "data.xml");
            foreach (Worker i in list)
            {
                Console.WriteLine($"Имя: {i.FirstName}, Организация: {i.Organization}, Место работы: {i.Organization}");
            }
            //worker.WorkededHandler += (sender, s) =>
            //{
            //    Console.WriteLine("Работа была завершена и на данный момент на счету: " + s.Sum + "\u20BD");
            //    Console.WriteLine($"Спасибо за работу {s.FirstName} в нашей организации:'{s.Organization}'");
            //};
            //worker.Worked(worker);
            //worker.DoubleWorked(worker);
            //SaveAsXMLFormat(worker, "data.xml");
            //Worker newWorker = LoadFromXMLFormat("data.xml");
            //Console.WriteLine($"{newWorker.FirstName} {newWorker.Organization} {newWorker.Sum}");
            Console.ReadKey();
            Type type = new TypeDelegator(typeof(Worker));

            Console.ReadKey();
        }
예제 #3
0
        public void DeclaringTypeMustReturnNonInflatedType()
        {
            var ut  = new TypeDelegator(typeof(int));
            var ut2 = typeof(Bar <> .Foo <>);
            var t   = ut2.MakeGenericType(ut, ut);

            Assert.AreSame(typeof(Bar <>), t.DeclaringType, "#1");
        }
예제 #4
0
        public void GenerateVoidMapTest()
        {
            Type Void = new TypeDelegator(typeof(VoidCase));
            Map  map  = new Map();
//            foreach (var mapCase in map.MapContent)
//            {
//                Assert.AreEqual(typeof(VoidCase) , mapCase.GetType());
//            }
        }
예제 #5
0
        public void IsAssignableFrom()
        {
            TypeDelegator td = new TypeDelegator(typeof(int));

            Assert.AreEqual(true, typeof(int).IsAssignableFrom(td));
            Assert.AreEqual(false, typeof(string).IsAssignableFrom(td));
            Assert.AreEqual(true, td.IsAssignableFrom(typeof(int)));
            Assert.AreEqual(false, td.IsAssignableFrom(typeof(string)));
        }
예제 #6
0
        public void IsAssignableTo()
        {
            TypeDelegator td = new TypeDelegator(typeof(int));

            Assert.True(td.IsAssignableTo(typeof(int)));
            Assert.False(td.IsAssignableTo(typeof(string)));
            Assert.True(typeof(int).IsAssignableTo(td));
            Assert.False(typeof(string).IsAssignableTo(td));
        }
예제 #7
0
        public void IsAssignableFrom()
        {
            TypeDelegator td = new TypeDelegator(typeof(int));

            Assert.True(typeof(int).IsAssignableFrom(td));
            Assert.False(typeof(string).IsAssignableFrom(td));
            Assert.True(td.IsAssignableFrom(typeof(int)));
            Assert.False(td.IsAssignableFrom(typeof(string)));
        }
예제 #8
0
 private static object InstantiateType(Type type)
 {
     try {
         ProtoBuf.Item item        = new ProtoBuf.Item();
         var           element     = Activator.CreateInstance(type);
         IntPtr        baseAddress = TypeDelegator.GetTypeHandle(element).Value;
         var           fields      = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
         foreach (var field in fields)
         {
             if (field.FieldType.IsEquivalentTo(typeof(String)))
             {
                 field.SetValue(element, "RI");
             }
             else if (field.FieldType.IsEquivalentTo(typeof(Byte[])))
             {
                 field.SetValue(element, new byte[0]);
             }
             else if (typeof(IList).IsAssignableFrom(field.FieldType))
             {
                 var    itemType = field.FieldType.GetGenericArguments()[0];
                 object listItem = null;
                 if (itemType.IsEquivalentTo(typeof(ProtoBuf.PlayerNameID)))
                 {
                     listItem = InstantiateType(typeof(ProtoBuf.PlayerNameID));
                 }
                 else if (itemType.IsEquivalentTo(typeof(ProtoBuf.RespawnInformation.SpawnOptions)))
                 {
                     listItem = InstantiateType(typeof(ProtoBuf.RespawnInformation.SpawnOptions));
                 }
                 else if (itemType.IsEquivalentTo(typeof(ProtoBuf.ClientReady.ClientInfo)))
                 {
                     listItem = InstantiateType(typeof(ProtoBuf.ClientReady.ClientInfo));
                 }
                 else
                 {
                     listItem = Activator.CreateInstance(itemType);
                 }
                 var list = Activator.CreateInstance(field.FieldType);
                 field.FieldType.GetMethod("Add").Invoke(list, new[] { listItem });
                 field.SetValue(element, list);
             }
             else if (typeof(IProto).IsAssignableFrom(field.FieldType))
             {
                 field.SetValue(element, InstantiateType(field.FieldType));
             }
             else
             {
                 field.SetValue(element, Activator.CreateInstance(field.FieldType));
             }
         }
         return(element);
     } catch (Exception ex) {
         Console.WriteLine(ex);
     }
     return(null);
 }
예제 #9
0
        public void BaseTypeMustReturnNonInflatedType()
        {
            var ut  = new TypeDelegator(typeof(int));
            var ut2 = typeof(SubClass <>);
            var t   = ut2.MakeGenericType(ut);
            //This is Base<K> where K is SubClass::K
            var expected = typeof(Base <>).MakeGenericType(typeof(SubClass <>).GetGenericArguments()[0]);

            Assert.AreSame(expected, t.BaseType, "#1");
        }
예제 #10
0
        public async Task CanGetUsuarioById()
        {
            var httpResponse = await _client.GetAsync("/api/Usuarios/1");

            httpResponse.EnsureSuccessStatusCode();
            var stringResponse = await httpResponse.Content.ReadAsStringAsync();

            var  User = JsonConvert.DeserializeObject <Usuario>(stringResponse);
            Type type = new TypeDelegator(typeof(Usuario));

            Assert.False(User.GetType() == type);
        }
        public void GetAttributesNullTest()
        {
            var provider  = new DataAnnotationsModelMetadataProvider();
            var modelType = new TypeDelegator(typeof(TestModel));
            var t         = new ModelMetadata(provider, null, null, modelType, string.Empty);

            t.AdditionalValues["Attributes"] = new List <DisplayAttribute>();
            var a = t.GetAttributes <DisplayAttribute>();

            Assert.IsNotNull(a);
            Assert.AreEqual(0, a.Count());
        }
예제 #12
0
        public void BeforeAllTests()
        {
            _balloonProgramTypeInfo = new TypeDelegator(typeof(BalloonProgram));

            var assembly = Assembly.GetAssembly(typeof(Program));

            _writeDelegateTypeInfo = assembly.DefinedTypes.FirstOrDefault(t =>
            {
                if (!typeof(MulticastDelegate).IsAssignableFrom(t))
                {
                    return(false);
                }

                //check signature (must return void and have a string parameter)
                var methodInfo = t.DeclaredMethods.First(p => p.Name == "Invoke");
                if (methodInfo.ReturnType.Name.ToLower() != "void")
                {
                    return(false);
                }
                ParameterInfo[] parameters = methodInfo.GetParameters();
                if (parameters.Length != 1)
                {
                    return(false);
                }
                if (parameters[0].ParameterType != typeof(string))
                {
                    return(false);
                }
                return(true);
            });

            if (_writeDelegateTypeInfo != null)
            {
                _constructorTypeInfo = _balloonProgramTypeInfo.GetConstructors().FirstOrDefault(c =>
                {
                    var parameters = c.GetParameters();
                    if (parameters.Length != 1)
                    {
                        return(false);
                    }
                    return(parameters[0].ParameterType == _writeDelegateTypeInfo.AsType());
                });

                if (_constructorTypeInfo != null)
                {
                    MethodInfo handlerMethodInfo = typeof(BalloonProgramTests).GetMethod(nameof(LogWrite), BindingFlags.NonPublic | BindingFlags.Instance);
                    Delegate   writeDelegate     = Delegate.CreateDelegate(_writeDelegateTypeInfo, this, handlerMethodInfo);
                    _program = (BalloonProgram)_constructorTypeInfo.Invoke(new object[] { writeDelegate });
                }
            }

            _balloonProgramClassContent = Solution.Current.GetFileContent(@"Exercise1\BalloonProgram.cs");
        }
예제 #13
0
파일: Form1.cs 프로젝트: WssIDs/TKP
        public Form1()
        {
            InitializeComponent();

            type     = TypeDelegator.GetTypeFromProgID("MSCAL.Календарь.7");
            calendar = Activator.CreateInstance(type);

            day   = (short)type.InvokeMember("Day", BindingFlags.GetProperty, null, calendar, null);
            month = (short)type.InvokeMember("Month", BindingFlags.GetProperty, null, calendar, null);
            year  = (short)type.InvokeMember("Year", BindingFlags.GetProperty, null, calendar, null);

            day_txt.Text   = day.ToString();
            month_txt.Text = month.ToString();
        }
예제 #14
0
        public dynamic LoadVm(string typeStr)
        {
            dynamic dyn  = new System.Dynamic.ExpandoObject();
            var     type = Type.GetType(typeStr);

            if (type != null)
            {
                var      vm       = Activator.CreateInstance(type);
                TypeInfo typeInfo = new TypeDelegator(type);
                var      method   = typeInfo.GetMethod("Add");
                method?.Invoke(vm, new object[] { null });
                dyn.VM = vm;
            }
            return(dyn);
        }
예제 #15
0
 // searches for the class, initiates it (calls factory method) and returns the instance
 // TODO: add a lot of error handling!
 ICalculate CreateCachableICalculate(string className)
 {
     if (!InstanceCreateCache.ContainsKey(className))
     {
         // get the type (several ways exist, this is an eays one)
         Type type = TypeDelegator.GetType("AirportListTest." + className);
         // NOTE: do NOT use the following, because you cannot create a delegate from a ctor!
         ConstructorInfo constructorInfo = type.GetConstructor(Type.EmptyTypes);
         // works with public instance/static methods
         MethodInfo mi = type.GetMethod("Create");
         // the "magic", turn it into a delegate
         var createInstanceDelegate = (Func <ICalculate>)Delegate.CreateDelegate(typeof(Func <ICalculate>), mi);
         // store for future reference
         InstanceCreateCache.Add(className, createInstanceDelegate);
     }
     return(InstanceCreateCache[className].Invoke());
 }
예제 #16
0
        public static T ConvertToObject(DataRow dr, string prefix = "")
        {
            T t = new T();

            PropertyInfo[]       targetProperties = typeof(T).GetProperties();
            DataColumnCollection columns          = dr.Table.Columns;

            foreach (PropertyInfo i in targetProperties)
            {
                var aa = i.PropertyType;
                Console.WriteLine(aa);
                string name = prefix + i.Name;
                if (columns.Contains(name))
                {
                    object value = dr[name];
                    if (value != DBNull.Value)
                    {
                        if (i.PropertyType == typeof(bool))
                        {
                            i.SetValue(t, (true.Equals(value) || "1".Equals(value) || "Y".Equals(value)), null);
                        }
                        else if (i.PropertyType.IsEnum)
                        {
                            i.SetValue(t, Enum.ToObject(i.PropertyType, value));
                        }
                        else
                        {
                            if (i.PropertyType.ToString().Contains("System.Nullable"))
                            {
                                string propertyType = i.PropertyType.ToString().Substring(i.PropertyType.ToString().IndexOf('[') + 1);
                                propertyType = propertyType.Remove(propertyType.LastIndexOf(']'));
                                i.SetValue(t, Convert.ChangeType(value, TypeDelegator.GetType(propertyType)), null);
                            }
                            else
                            {
                                i.SetValue(t, Convert.ChangeType(value, i.PropertyType), null);
                            }
                        }
                    }
                }
            }

            return(t);
        }
        public void GetAttribute_PredicateTest()
        {
            var provider  = new DataAnnotationsModelMetadataProvider();
            var modelType = new TypeDelegator(typeof(TestModel));
            var t         = new ModelMetadata(provider, null, null, modelType, string.Empty);

            t.AdditionalValues["Attributes"] = new List <DisplayAttribute>()
            {
                new DisplayAttribute()
                {
                    Name = "TestField", Order = 1
                }
            };
            var a = t.GetAttribute <DisplayAttribute>(p => p.Name.Equals("TestField"));

            Assert.IsNotNull(a);
            Assert.AreEqual("TestField", a.Name);
            Assert.AreEqual(1, a.Order);
        }
예제 #18
0
        /// <summary>
        /// Allows the sprite to handle user input.
        /// </summary>
        /// <param name="input">The input.</param>
        public void OnEnter(Player player)
        {
            // Play the sound and deactivate the door
            this._doorSound.Play();
            this._isActive = false;
            CollisionManager.Collection.QueuePendingRemoval(this);

            // Create the level
            var screenType = TypeDelegator.GetType("SoftProGameWindows." + this._levelScreenName);
            var screen     = (LevelScreen)Activator.CreateInstance(screenType);

            // Add it to the screen manager
            var sm = this.GetService <ScreenManager>();

            sm.AddScreen(screen, null);

            // Spawn the player
            screen.SpawnPlayer(player);
        }
예제 #19
0
        public async Task CanPostUsuario()
        {
            var formContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("nombre", "dominic"),
                new KeyValuePair <string, string>("apellido", "di´cococ"),
                new KeyValuePair <string, string>("email", "*****@*****.**"),
                new KeyValuePair <string, string>("password", "8D969EEF6ECAD3C29A3A629280E686CF0C3F5D5A86AFF3CA12020C923ADC6C92"),
            });
            var httpResponse = await _client.PostAsync("/api/Usuarios/", formContent);

            httpResponse.EnsureSuccessStatusCode();
            var stringResponse = await httpResponse.Content.ReadAsStringAsync();

            var  User = JsonConvert.DeserializeObject <Usuario>(stringResponse);
            Type type = new TypeDelegator(typeof(Usuario));

            Assert.False(User.GetType() == type);
        }
예제 #20
0
    public T To <T>(object param)
    {
        var out_type = new TypeDelegator(typeof(T));

        if (out_type.Equals(typeof(int)))
        {
            return((T)(int.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(long)))
        {
            return((T)(long.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(double)))
        {
            return((T)(double.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(decimal)))
        {
            return((T)(decimal.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(float)))
        {
            return((T)(float.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(Version)))
        {
            return((T)(Version.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(DateTime)))
        {
            return((T)(DateTime.Parse(param.ToString()) as object));
        }
        if (out_type.Equals(typeof(string)))
        {
            return((T)(param as object));
        }
        else
        {
            return((T)param);
        }
    }
예제 #21
0
        private void KillUsers()
        {
#if !NO1CCOM
            Type    type          = TypeDelegator.GetTypeFromProgID("V83.ComConnector");
            dynamic V8            = Activator.CreateInstance(type);
            dynamic Agent         = V8.ConnectAgent(MainSettings.LocalSqlSettings.Server1C);          // Соединились с 1С Агентом
            dynamic Clusters      = Agent.GetClusters();
            int     ClustersCount = Clusters.GetLength(0);
            for (int i = 0; i < ClustersCount; i++)
            {
                dynamic CurrentCluster = Clusters[i];
                Agent.Authenticate(CurrentCluster, "", "");
                dynamic IBSessions    = Agent.GetSessions(CurrentCluster);
                int     SessionsCount = IBSessions.GetLength(0);
                for (int k = 0; k < SessionsCount; k++)
                {
                    Agent.TerminateSession(CurrentCluster, IBSessions[k]);
                }
            }
#endif
        }
예제 #22
0
        public async Task CanPostUser()
        {
            var user = new User()
            {
                nombre   = "Antonio",
                apellido = "Margarete",
                email    = "*****@*****.**",
                password = "******"
            };
            var result       = JsonConvert.SerializeObject(user);
            var content      = new StringContent(result.ToString(), Encoding.UTF8, "application/json");
            var httpResponse = await _client.PostAsync("/api/Users/", content);

            httpResponse.EnsureSuccessStatusCode();
            var stringResponse = await httpResponse.Content.ReadAsStringAsync();

            var  User = JsonConvert.DeserializeObject <User>(stringResponse);
            Type type = new TypeDelegator(typeof(User));

            Assert.False(User.GetType() == type);
        }
        protected override void ActExecution()
        {
#if !NO1CCOM
            Type    type = TypeDelegator.GetTypeFromProgID("V83.ComConnector");
            dynamic V8   = Activator.CreateInstance(type);

            dynamic Agent         = V8.ConnectAgent(MainSettings.LocalSqlSettings.Server1C);          // Соединились с 1С Агентом
            dynamic Clusters      = Agent.GetClusters();
            int     ClustersCount = Clusters.GetLength(0);
            for (int i = 0; i < ClustersCount; i++)
            {
                dynamic CurrentCluster = Clusters[i];
                Agent.Authenticate(CurrentCluster, "", "");
                dynamic WorkingProcess = Agent.GetWorkingProcesses(CurrentCluster);
                dynamic currentwp      = WorkingProcess[0];

                String Port     = (String)currentwp.MainPort.ToString();
                String HostName = (String)currentwp.HostName;
                String ConnStr  = HostName + ":" + Port;

                dynamic wpConnection = V8.ConnectWorkingProcess(ConnStr);
                wpConnection.AddAuthentication(MainSettings.LocalSqlSettings.User1C, MainSettings.LocalSqlSettings.Pass1C);
                dynamic IBArray = wpConnection.GetInfoBases();

                int Count = IBArray.GetLength(0);
                for (int j = 0; j < Count; j++)
                {
                    dynamic currentIB = IBArray[j];
                    if (string.Compare(currentIB.Name, MainSettings.LocalSqlSettings.Base1C, true) == 0)
                    {
                        currentIB.ScheduledJobsDenied = false;
                        wpConnection.UpdateInfoBase(currentIB);
                    }
                }
            }
#endif
        }
예제 #24
0
        public static List <IBeingInterface> AddBeing(byte[] dll)
        {
            List <IBeingInterface> objects = new List <IBeingInterface>();
            Assembly assembly         = Assembly.Load(dll);
            string   iMyInterfaceName = typeof(IBeingInterface).ToString();

            TypeDelegator[] defaultConstructorParametersTypes = new TypeDelegator[0];
            object[]        defaultConstructorParameters      = new object[0];

            IBeingInterface iAI = null;

            foreach (Type type in assembly.GetTypes())
            {
                if (type.GetInterface(iMyInterfaceName) != null)
                {
                    ConstructorInfo defaultConstructor = type.GetConstructor(defaultConstructorParametersTypes);
                    object          instance           = defaultConstructor.Invoke(defaultConstructorParameters);
                    iAI = (IBeingInterface)instance;                    //Достаём таки нужный интерфейс
                    //
                    objects.Add(iAI);
                }
            }
            return(objects);
        }
예제 #25
0
        public static T ConvertToObject(object obj)
        {
            T t = new T();

            PropertyInfo[] targetProperties = typeof(T).GetProperties();
            PropertyInfo[] sourceProperties = obj.GetType().GetProperties();

            foreach (PropertyInfo i in targetProperties)
            {
                var sp = (from p in sourceProperties
                          where p.Name == i.Name
                          select p).FirstOrDefault();

                if (null == sp)
                {
                    continue; // property not found
                }
                if (i.PropertyType.Equals(sp.PropertyType))
                {
                    i.SetValue(t, sp.GetValue(obj), null);
                }
                else if (i.PropertyType.ToString().Contains("System.Nullable"))
                {
                    // 取得原始變數類型
                    string propertyType = i.PropertyType.ToString().Substring(i.PropertyType.ToString().IndexOf('[') + 1);
                    propertyType = propertyType.Remove(propertyType.LastIndexOf(']'));
                    i.SetValue(t, Convert.ChangeType(sp.GetValue(obj), TypeDelegator.GetType(propertyType)), null);
                }
                else
                {
                    i.SetValue(t, Convert.ChangeType(sp.GetValue(obj), i.PropertyType), null);
                }
            }

            return(t);
        }
 public ExternalType(Type type)
 {
     delegator = new TypeDelegator(type);
 }