Сообщение Re[2]: Минутка WTF-14: не повторяясь от 09.01.2017 10:21
Изменено 09.01.2017 10:28 dmitry_npi
Re[2]: Минутка WTF-14: не повторяясь
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Sinix, Вы писали:
S>>Вывод отдельным ответом ибо спойлер.
S>
Почему выводится это, понять можно: дизассемблировав сборку, видно, что повторяющийся атрибут туда просто не попал. (я имею в виду атрибут сборки, на атрибуты класса можно вообще забить).
Также можно упростить код атрибута до
То есть, мы можем сказать, что метод GetCustomAttributes тут ни при чём, просто компилятор не поместил повторяющийся атрибут в сборку, причём "одинаковость" он определяет только по параметрам конструктора, остальное (свойства) в счёт не идет.
Так что вопрос сводится к "зачем они так сделали?". Тут могут быть варианты:
S>Здравствуйте, Sinix, Вы писали:
S>>Вывод отдельным ответом ибо спойлер.
S>
| ибо спойлер | |
S>S>как-то так, да. | |
Почему выводится это, понять можно: дизассемблировав сборку, видно, что повторяющийся атрибут туда просто не попал. (я имею в виду атрибут сборки, на атрибуты класса можно вообще забить).
Также можно упростить код атрибута до
public MyAttribute(string origin)
{
// пусто
}То есть, мы можем сказать, что метод GetCustomAttributes тут ни при чём, просто компилятор не поместил повторяющийся атрибут в сборку, причём "одинаковость" он определяет только по параметрам конструктора, остальное (свойства) в счёт не идет.
Так что вопрос сводится к "зачем они так сделали?". Тут могут быть варианты:
- Ненамеренно. Баг — самое простое предположение. Но с пятой версии должны были исправить, наверно.
Намеренно. Решили изменить поведение (а как же возможность прописывать несколько значений?). Для чего — не знаю.
Re[2]: Минутка WTF-14: не повторяясь
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Sinix, Вы писали:
S>>Вывод отдельным ответом ибо спойлер.
S>
Почему выводится это, понять можно: дизассемблировав сборку, видно, что повторяющийся атрибут туда просто не попал. (я имею в виду атрибут сборки, на атрибуты класса можно вообще забить).
Также можно упростить код атрибута до
То есть, мы можем сказать, что метод GetCustomAttributes тут ни при чём, просто компилятор не поместил повторяющийся атрибут в сборку, причём "одинаковость" он определяет только по параметрам конструктора, остальное (свойства) в счёт не идет.
Кстати, можно дизассемблировать сборку, прописать туда "пропавший" атрибут по аналогии и ассемблировать снова. Тогда получим ожидаемый результат.
Так что вопрос сводится к "зачем они так сделали?". Тут могут быть варианты:
S>Здравствуйте, Sinix, Вы писали:
S>>Вывод отдельным ответом ибо спойлер.
S>
| ибо спойлер | |
S>S>как-то так, да. | |
Почему выводится это, понять можно: дизассемблировав сборку, видно, что повторяющийся атрибут туда просто не попал. (я имею в виду атрибут сборки, на атрибуты класса можно вообще забить).
Также можно упростить код атрибута до
public MyAttribute(string origin)
{
// пусто
}То есть, мы можем сказать, что метод GetCustomAttributes тут ни при чём, просто компилятор не поместил повторяющийся атрибут в сборку, причём "одинаковость" он определяет только по параметрам конструктора, остальное (свойства) в счёт не идет.
Кстати, можно дизассемблировать сборку, прописать туда "пропавший" атрибут по аналогии и ассемблировать снова. Тогда получим ожидаемый результат.
Так что вопрос сводится к "зачем они так сделали?". Тут могут быть варианты:
- Ненамеренно. Баг — самое простое предположение. Но с пятой версии должны были исправить, наверно.
Намеренно. Решили изменить поведение (а как же возможность прописывать несколько значений?). Для чего — не знаю.