IHTMLDocumentは、本質的に、それを実装するオブジェクトが提供するものを表す「破られない」コントラクトであるインターフェイスです。
新しいバージョンのコードに移動するときにインターフェイスを変更すると、その契約が破綻し、その契約に依存しているコードが破損する可能性があります。
は、作成したとします
public interface IMyInterface {
public int Property1 { get; set; }
}
年後にあなたがProperty2を追加する必要がありますが、あなたのインターフェイスを変更することはできません。
public interface IMyInterface2 {
public int Property2 { get;set; }
}
をして、IMyInterfaceというの実装された古いクラスで:
public class MyObject : IMyInterface, IMyInterface2 {
public int Property1 { get {} set {} }
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はますます多くのInterfacesを追加し、より新しい機能/コードを公開しました。
IHTMLTxtRangeは、より一般的に使用されるTextRangeオブジェクト用のインターフェイスです。 "Fragments"または "Ranges"というテキストを解析する機能を提供します。
http://www.webreference.com/js/column12/trmethods.html