2009-05-08 9 views
3

私は私の現在のプロジェクトで、Webブラウザを使用していますが、現在、私はそれを編集可能にするために、デザインモードでそれを使用しているなどを使用して、私が現在使用しているコードは次のとおりです。IHTMLDocuments 1、2、3&4

WebBrowser.Document.DomDocument as IHTMLDocument2 

実際にIHTMLDocument2,3または4とは何ですか?また、ドキュメント内の現在の選択範囲を特定するときに、range.text.replaceメソッドがstring.replaceと同じように動作していないことも判明しました。

誰でも私にIHTMLDocumentsとIHTMLTxtRangeの基本機能を教えていただけますか?

答えて

2

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

関連する問題