2009-05-08 4 views
3

내 현재 프로젝트에서 웹 브라우저를 사용하고, 현재 내가 편집 가능하도록 디자인 모드에서 그것을 사용하고 등 내가 현재 사용하고있는 코드는 다음과 같습니다사용 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 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

관련 문제