Obsolete
속성은 프로그램 엔티티를 더 이상 사용하지 않는 것으로 표시합니다. 폐기 된 것으로 표시된 엔티티를 사용할 때마다 속성 구성 방법에 따라 경고 또는 오류가 생성됩니다.
여기서 참조 소스의 Hashtable
비교 자에 대한 예제입니다.
[Obsolete("Please use KeyComparer properties.")]
protected IComparer comparer
{
get
{
if(_keycomparer is CompatibleComparer) {
return ((CompatibleComparer)_keycomparer).Comparer;
}
else if(_keycomparer == null) {
return null;
}
else {
throw new ArgumentException(Environment.GetResourceString("Arg_CannotMixComparisonInfrastructure"));
}
}
set
{
if (_keycomparer is CompatibleComparer) {
CompatibleComparer keyComparer = (CompatibleComparer)_keycomparer;
_keycomparer = new CompatibleComparer(value, keyComparer.HashCodeProvider);
}
else if(_keycomparer == null) {
_keycomparer = new CompatibleComparer(value, (IHashCodeProvider)null);
}
else {
throw new ArgumentException(Environment.GetResourceString("Arg_CannotMixComparisonInfrastructure"));
}
}
}
코드를 더 이상 사용하지 않는 것으로 표시하면 API를 더 많이 사용하게됩니다. 그것은 쓸모없는 코드가 실제로 제거되기 전에 그들에게 반응하여 현재의 방법이 무엇이든간에 변화 할 수있는 기회를 제공합니다. 외부 사용자가 아닌 내부 사용을위한 것이라면 더 이상 사용되지 않는 이유는 없습니다. –
more @http : //stackoverflow.com/questions/3510892/usage-of-the-obsolete-attribute –
@GlorinOakenfoot 이유가 있습니다. 어쩌면 당신은 의존성을 가진 하나 이상의 프로젝트를 가지고 있습니다. 예 : 라이브러리 A는 라이브러리를 사용합니다. B. 이제는 A의 모든 코드를 변경하지 말고 나중에 표시하기 위해 표시 만하고 싶지 않을 수 있습니다. 예 : 200 개 장소의 다른 도서관에서 사용되는 방법이 있습니다. 한 번에 모든 것을 고치지 않으려 고합니다. (오래 된 코드가 여전히 올바른 한). 더 나은 해결책은 기존의 메소드를 변경하여 새로운 코드를 호출하는 것입니다. –