Я пытаюсь создать универсальный метод, который будет считывать атрибут класса и возвращать это значение во время выполнения. Как мне это сделать?
Примечание. Атрибут DomainName относится к классу DomainNameAttribute.
[DomainName("MyTable")]
Public class MyClass : DomainBase
{}
Что я пытаюсь создать:
//This should return "MyTable"
String DomainNameValue = GetDomainName<MyClass>();
c#
generics
custom-attributes
Заффиро
источник
источник
Ответы:
ОБНОВИТЬ:
Этот метод можно обобщить для работы с любым атрибутом:
и используйте вот так:
источник
const Filed
в статический класс?Для этого уже есть расширение.
Так:
источник
источник
Я использовал ответ Дарина Димитрова для создания универсального расширения для получения атрибутов членов для любого члена в классе (вместо атрибутов для класса). Я размещаю его здесь, потому что другие могут найти его полезным:
Пример использования:
источник
Упрощенная версия первого решения Дарина Димитрова:
источник
Вот хороший учебник, если вы его раньше не видели http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx
Особый интерес для вас представляет раздел, который называется Доступ к атрибуту http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx#vcwlkattributestutorialanchor3
источник
Вероятно, так же просто использовать тело встроенной универсальной функции. Мне не имеет смысла делать функцию универсальной для типа MyClass.
источник
Если кому-то нужен результат, допускающий значение NULL, и чтобы он работал в Enums, PropertyInfo и классах, вот как я решил это. Это модификация обновленного решения Дарина Димитрова.
Примеры использования:
источник
Вместо того, чтобы писать много кода, просто сделайте следующее:
источник
источник