У меня есть решение с несколькими API-проектами в различных пространствах имен. Я ищу способ проверить все проекты API одновременно, чтобы проверить, есть ли у любого из них класс (контроллер) с тем же именем, что и у другого класса в любом из этих проектов.
Давайте скажем, у меня есть следующие классы:
Api1.DogController
Api1.CatController
Api2.BirdController
Теперь кто-то добавляет новый CatController
к Api2
, поэтому у нас есть
Api2.BirdController
Api2.CatController
Я бы хотел, чтобы PostShart выдавал ошибку сборки, потому что класс с именем CatController
уже существует в проекте Api1
. И я предпочел бы избежать необходимости добавлять какие-либо атрибуты в классы, которые должны проверяться. Я согласен со ссылкой на ограничение в файле AssemblyInfo
проектов API.
Я попытался сделать некоторые вещи с ScalarConstraint
и типами, например:
[MulticastAttributeUsage(MulticastTargets.Class)]
public class ControllerNamesValidation : ScalarConstraint
{
public override void ValidateCode(object target)
{
var targetType = (Type)target;
//various experiments with targetType.GetMembers() or targetType.GetNestedTypes() here...
}
}
, но не смог .