Это возможно во время выполнения через Reflection.
Вот метод модульного теста для вас:
...
using System.Reflection;
using System.Diagnostics;
using System.Linq;
...
[TestMethod]
public void CheckAttributes()
{
var notAttributed = Assembly.GetAssembly(typeof(SomeClass))
.GetTypes()
.Where(t => t.GetCustomAttributes(typeof(MyAttribute), true).Count() == 0);
Assert.AreEqual<int>(0, notAttributed.Count());
}
Где MyAttribute
- это тип вашего атрибута, а SomeClass
- это класс в сборке, которую вы хотите проверить.
Вы также можете отфильтровать типы, которые вы хотите проверить таким образом. (Конечно, только если вам не требуется, чтобы каждый класс в сборке использовал этот атрибут.)
Если вы хотите сделать это в рабочем коде, поместите в него атрибут Conditional("DEBUG")
, чтобы убедиться, что он выполняется только в режиме отладки.
(Потому что Reflection не быстрый, и запускать его в производственном режиме не имеет смысла, не так ли?)