コード例 #1
0
ファイル: Core.cs プロジェクト: Wargamer3/Project-Eternity
        public static List <T> GetObjectsFromBaseInterface <T>(Type TypeOfT, Type[] ArrayTypes, params object[] Args)
        {
            List <T> ListObject = new List <T>();

            foreach (Type ActiveType in ArrayTypes)
            {
                if (ActiveType.IsAbstract)
                {
                    continue;
                }

                foreach (Type ActiveInterface in ActiveType.GetInterfaces())
                {
                    Type ObjectType           = ActiveInterface;
                    bool InstanceIsBaseObject = false;
                    while (ObjectType != null && !InstanceIsBaseObject)
                    {
                        if (ObjectType == TypeOfT)
                        {
                            InstanceIsBaseObject = true;
                        }

                        ObjectType = ObjectType.BaseType;
                    }

                    if (InstanceIsBaseObject)
                    {
                        T NewObject = (T)Activator.CreateInstance(ActiveType, Args);
                        ListObject.Add(NewObject);
                    }
                }
            }
            return(ListObject);
        }