IHTMLDocument는 인터페이스를 구현하는 개체가 제공하는 것을 나타내는 "깨지지 않는"계약 인 인터페이스입니다.
코드의 새 버전으로 이동할 때 인터페이스를 변경하면 해당 계약이 중단되고 해당 계약에 의존하는 코드가 중단됩니다.
사용자가 만든 가정 :
public interface IMyInterface {
public int Property1 { get; set; }
}
년 후 당신이 Property2를 추가해야하지만, 당신이 당신의 인터페이스를 변경할 수 없습니다.
다음
public class MyObject : IMyInterface, IMyInterface2 {
public int Property1 { get {} set {} }
public int Property2 { get {} set {} }
}
당신이 이전 계약을 아프게하지 않지만 코드에 새로운 인터페이스를 사용할 수 있습니다 : IMyInterface이 구현되어 기존의 클래스와
public interface IMyInterface2 {
public int Property2 { get;set; }
}
다음을 : 그래서 주위에 한 가지 방법은 만드는 것입니다 예를 들면 다음과 같습니다.
if (obj is IMyInterface) {
Console.WriteLine(((IMyInterface)obj).Property1);
if (obj is IMyInterface2) {
//more
}
}
그래서 Microsoft와 같습니다. IHTMLDocument가있는 mshtml 라이브러리는 COM 라이브러리이며 COM은 인터페이스에 많이 의존합니다. 라이브러리가 진화함에 따라 Microsoft는 점점 더 많은 인터페이스를 추가하여 새로운 기능/코드를 공개했습니다.
IHTMLTxtRange는보다 일반적으로 사용되는 TextRange 개체의 인터페이스입니다. "Fragments"또는 "Ranges"텍스트를 구문 분석하는 기능을 제공합니다.
http://www.webreference.com/js/column12/trmethods.html