1. C# / Говнокод #16484

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    private CMSEntities entities = new CMSEntities();
            private List<Object> ObjectSets { get; set; }
            private List<Type> Types { get; set; }
             
    
    
            public void GetFields()
            {
                Types = new List<Type>();
                var entitiesType = entities.GetType();
                var assembly = Assembly.Load("CMS.Data");
                var types = assembly.GetTypes();
                foreach (var type in assembly.GetTypes())
                {
                    if (type.BaseType != null &&
                        type.BaseType.Name.Equals("EntityObject") &&
                        type.Name.IndexOf("aspnet",StringComparison.InvariantCultureIgnoreCase)<0 &&
                        type.Name != "sysdiagram")
                    {
                        Types.Add(type);
                    }
                }
                var properties = entitiesType.GetProperties();
                ObjectSets = new List<Object>();
                foreach (var propertyInfo in properties)
                {
                    var obj = propertyInfo.GetValue(entities, null);
                    if(propertyInfo.PropertyType.IsGenericType && obj!=null) ObjectSets.Add(obj);
                }    
            }

    Рефлексия и Entity Framework

    Запостил: Serg, 05 Августа 2014

    Комментарии (5) RSS

    • А заечем такое писать, если код по любому свалится в исключение?
      Ведь проще через Reference добавить, не подписывать сертификатом и не менять версию.
      И получим: старый, добрый, библиотечный адъ

      Ну а до такого "изящьного" обхода ASP.NET Membership API с магическими строками - не всякий проктолог додумается.

      А, да, и ещё одно, нафига this.Types и this.ObjectSets инициализировать в одном методе возвращающий(?) properties(?) поля? 0_o
      Девид Блейн даже потеряется...
      Ответить
    • Даже вникать нет желания. Хуита
      Ответить
      • Рефлексия - полезная штука, если не увлекаться.
        Там-же целый AOP (http://en.wikipedia.org/wiki/Aspect-oriented_programming)
        Ответить
    • Вокруг послышались голоса: "Оттащите его", "У него крыша поехала". И вдруг женщина, стоявшая на коленях вместе с Ним, подняла руку:
      Ответить

    Добавить комментарий