У меня есть атрибут, который позволяет называть его SomeAttribute и классом, который должен быть удостоен класса, который имеет SomeAttribute. Так что это, как я делаю это сейчас:C#: Убедитесь, что параметр имеет атрибут
public class Test()
{
public Test(SomeType obj)
{
if(!obj.GetType().IsDefined(typeof(SomeAttribute), false))
{
throw new ArgumentException("Errormessage");
}
}
}
Но это означает, что я не получаю никаких ошибок во время компиляции, но где-то во время выполнения, если OBJ не имеет атрибута. Есть ли способ указать в объявлении метода, что параметр должен иметь некоторый атрибут? Итак, я получаю ошибки, я компилирую время при использовании неправильных параметров, или мне нужно использовать пустой интерфейс?
На самом деле я задаюсь вопросом, есть ли способ сделать это, используя кодовые контракты? У меня очень мало опыта с ними, но он позволяет проверять время компиляции в других условиях только времени выполнения. – Josh
Я хочу использовать его для отметки объектов, поэтому я уверен, что они имеют какой-то тип, и я читал, что использование пустых интерфейсов - это плохая практика, поэтому я сделал это с атрибутами. Типу ничего не нужно. – slayerIQ
Я не думаю, что пустые интерфейсы - это плохая практика, они идеальное решение для этого. Однако что значит «какого-то типа»? Если объект не должен ничего реализовывать (просто быть помеченным как что-то), что будет с ним делать? –