특성을 사용하여 SomeAttribute를 호출하고 클래스에서 SomeAttribute가있는 형식이 전달되는지 확인해야합니다. 그래서 내가 지금 그것을 할 방법은 다음과 같습니다C# : 매개 변수가 있는지 확인
public class Test()
{
public Test(SomeType obj)
{
if(!obj.GetType().IsDefined(typeof(SomeAttribute), false))
{
throw new ArgumentException("Errormessage");
}
}
}
하지만이 obj가 속성이없는 경우 나, 어딘가 런타임에 컴파일시 오류를하지 않는 것을 의미한다. 메서드 선언에 매개 변수에 일부 특성이 있어야한다고 지정하는 방법이 있습니까? 그래서 내가 잘못된 매개 변수를 사용할 때 컴파일 시간을 얻거나 빈 인터페이스를 사용해야합니까?
실제로 코드 계약을 사용하여이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. 나는 그들과의 경험이 거의 없지만 런타임 전용 조건의 컴파일 타임 검사를 허용합니다. – Josh
개체를 표시하기 위해이 개체를 사용하여 특정 형식인지 확인하고 빈 인터페이스를 사용하는 것은 나쁜 습관이므로 속성을 사용하여 읽었습니다. 유형은 아무 것도 구현할 필요가 없습니다. – slayerIQ
빈 인터페이스가 나쁜 습관이라고 생각하지 않습니다.이 인터페이스는 완벽한 솔루션입니다. 그러나 "어떤 유형"이 실제로 의미하는 것은 무엇입니까? 객체가 아무것도 구현하지 않아도된다면 (무언가로 표시 만되어있다.), 당신의 메소드는 무엇을 할 것인가? –