Найдено результатов: 7

И DefaultEvent ASP.NET UserControl по

Контур

OK, я гуглил это и уже ожидал большой жир NO! ! Но я подумал, что должен спросить, так как я знаю, что иногда могут быть странные маленькие gem знания, скрывающиеся в головах людей ^_^

Я работаю над некоторыми упражнениями в книге для изучения, и это конкретное упражнение-пользовательские элементы управления. Я собрал элемент управления и хотел бы установить для него DefaultEvent (сделав это для предыдущих элементов управления), поэтому, когда я дважды щелкаю по нему, созданное событие по умолчанию-это то, что я указываю.

NOTE: это стандартный пользовательский элемент управления (.ascx), NOT пользовательский визуализированный элемент управления.

текущий код

Вот определение события класса &:

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

текущий результат

Теперь, когда я дважды щелкаю элемент управления, когда он находится на странице ASPX, создается следующее:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Не совсем то, что я ожидал! Итак, мой вопрос:

Можно ли определить DefaultEvent для UserControl? Это хак? Если это не поддерживается, почему?


Примечание: как мы помещаем подчеркивания в код? Кажется, я не могу поставить и избежать char?

c#   asp.net   user-controls   attributes    

508   2   18:21, 9th August, 2020


Как лучше всего использовать версию файла и версию Assembly?

В .NET есть два номера версий, доступных при построении проекта, версия файла и версия Assembly. Как вы используете эти цифры? Оставить их прежними? Автоматическое увеличение одного, но ручное изменение другого?

А как насчет атрибута AssemblyInformationalVersion ?

Я нашел эту статью в базе знаний Майкрософт поддержки (KB), которая предоставляла некоторую помощь: как использовать версию Assembly и версию файла Assembly .

.net   attributes   versions    

450   8   10:39, 20th August, 2020


Кто-нибудь знает быстрый способ добраться до пользовательских атрибутов по значению enum?

Это, вероятно, лучше всего показать на примере. У меня есть перечисление с атрибутами:

public enum MyEnum {

    [CustomInfo("This is a custom attrib")]
    None = 0,

    [CustomInfo("This is another attrib")]
    ValueA,

    [CustomInfo("This has an extra flag", AllowSomething = true)]
    ValueB,
}

Я хочу добраться до этих атрибутов из экземпляра:

public CustomInfoAttribute GetInfo( MyEnum enumInput ) {

    Type typeOfEnum = enumInput.GetType(); //this will be typeof( MyEnum )

    //here is the problem, GetField takes a string
    // the .ToString() on enums is very slow
    FieldInfo fi = typeOfEnum.GetField( enumInput.ToString() );

    //get the attribute from the field
    return fi.GetCustomAttributes( typeof( CustomInfoAttribute  ), false ).
        FirstOrDefault()        //Linq method to get first or null
        as CustomInfoAttribute; //use as operator to convert
}

Так как это использует отражение, я ожидаю некоторую медлительность, но это кажется беспорядочным, чтобы преобразовать значение enum в строку (которая отражает имя), когда у меня уже есть его экземпляр.

У кого-нибудь есть лучший способ?

c#   .net   reflection   enums   attributes    

489   2   16:38, 3rd August, 2020


Принудительное оформление атрибутов классов / методов

Следуя моему недавнему вопросу о больших, сложных объектах Как результате веб-службы . Я думал о том, как я могу гарантировать, что все будущие дочерние классы сериализуются в XML.

Теперь, очевидно, я мог бы реализовать интерфейс IXmlSerializable , а затем бросить в него читателя / писателя, но я хотел бы избежать этого, поскольку это означает, что мне нужно создавать экземпляр читателя/писателя всякий раз, когда я хочу это сделать, и 99.99% времени я буду работать со строкой, поэтому я могу просто написать свой собственный.

Однако, чтобы сериализовать до XML, я просто украшаю класс и его членов Xml? ?? атрибуты ( XmlRoot , XmlElement и др.) и затем передать его в XmlSerializer и StringWriter , чтобы получить строку. И это все хорошо. Я намерен поместить метод для возврата строки в общий метод утилиты, поэтому мне не нужно беспокоиться о типе и т. д.

То, что меня беспокоит, заключается в следующем: если я не украшаю класс(ы) необходимыми атрибутами, ошибка не возникает до времени выполнения.

Есть ли способ применить украшение атрибута? Можно ли это сделать с помощью FxCop? (Я еще не использовал FxCop)

UPDATE:

Извините за задержку в получении этого закрыть ребята, много дел!

Определенно нравится идея использовать отражение, чтобы сделать это в тестовом случае, а не прибегать к FxCop (например, чтобы держать все вместе).. Ответ Фредрика Калсета был фантастическим, спасибо за включение кода, поскольку мне, вероятно, потребовалось бы немного копать, чтобы понять, как это сделать самому!

+1 к другим ребятам за аналогичные предложения :)

c#   xml   serialization   coding-style   .net-attributes    

535   5   04:59, 1st August, 2020


Что такое атрибуты в .NET?

Что такое атрибуты в .NET, для чего они хороши, и как я могу создать свои собственные атрибуты?

c#   .net   glossary   .net-attributes    

4099   11   19:32, 22nd August, 2020


Уведомить разработчика о методе "DO NOT USE"

Ладно, я знаю, о чем ты думаешь, верно?

Короче говоря, у меня есть класс, который должен быть сериализован в XML. Для того, чтобы XmlSerializer выполнял свою магию, класс должен иметь пустой конструктор по умолчанию:

public class MyClass
{
  public MyClass()
  {
    // required for xml serialization
  }
}

Итак, мне нужно иметь его, но я не хочу, чтобы люди его использовали , поэтому есть ли какой-либо атрибут, который можно использовать для обозначения метода как "не использовать"?

Я думал об использовании устаревшего атрибута (поскольку это может остановить сборку), но это просто похоже на "wrong", есть ли другой способ сделать это, или мне нужно идти вперед и кусать пулю? :)

Обновление

OK, я принял ответ кита, так как я думаю в глубине души, я полностью согласен. Вот почему я задал этот вопрос в первую очередь, мне не нравится идея наличия устаревшего атрибута.

Однако...

Существует еще проблема, в то время как мы уведомлены в intellisense, в идеале, мы хотели бы разбить сборку, так есть ли способ сделать это? Возможно, создать пользовательский атрибут?

Здесь был создан более сфокусированный вопрос .

.net   attributes    

427   12   00:38, 22nd August, 2020


Создайте атрибут для разрыва сборки

Хорошо, это следует из моего предыдущего вопроса .

То, что я действительно хотел бы сделать, - это создать какой-то атрибут, который позволяет мне украсить метод, который сломает сборку . Очень похоже на устаревший атрибут("reason", true) , но без ложной идентификации устаревшего кода.

Чтобы уточнить: я не хочу, чтобы он нарушал сборку при любом нажатии F6 (Build), я только хочу, чтобы он нарушал сборку, если метод, украшенный атрибутом, вызывается где-то еще в коде. Как я уже сказал, Похоже на устаревшее, но не то же самое.

Я знаю, что я не одинок в этом, так как другие пользователи хотят использовать его по другим причинам . Я никогда не создавал пользовательские атрибуты раньше, так что все это ново для меня!

.net   attributes    

405   11   18:37, 19th August, 2020