2011-02-17 3 views

답변

1

David에게 중요한 점은 먼저 필요한 멤버를 결정하기 전에 인터페이스로 무엇을 할 것인지 결정해야한다는 것입니다. 단위 테스트를위한 인터페이스가 필요하면 별도의 접근 방식을 권합니다. 가장 많은 표를 얻은 답변을 this question (으)로보십시오. 요청대로 WebRequest 클래스 클래스를 수정할 수 없기 때문에

하지만, 엄격하게 귀하의 질문에 대답하기 위해, 당신은 첫째로 때문에 서브 클래스 싶어 :

public class MyWebRequest : WebRequest, IMyWebRequest 
{ 
} 

그런 다음 대중을 모두 추가 할 수 있습니다 WebRequest에서 IMyWebRequest에 노출 된 멤버 (노출하고 싶지 않은 회원 제거) :

public interface IMyWebRequest 
{ 
    Stream GetRequestStream(); 
    WebResponse GetResponse(); 
    IAsyncResult BeginGetResponse(AsyncCallback callback, object state); 
    WebResponse EndGetResponse(IAsyncResult asyncResult); 
    IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state); 
    Stream EndGetRequestStream(IAsyncResult asyncResult); 
    void Abort(); 
    RequestCachePolicy CachePolicy { get; set; } 
    string Method { get; set; } 
    Uri RequestUri { get; } 
    string ConnectionGroupName { get; set; } 
    WebHeaderCollection Headers { get; set; } 
    long ContentLength { get; set; } 
    string ContentType { get; set; } 
    ICredentials Credentials { get; set; } 
    bool UseDefaultCredentials { get; set; } 
    IWebProxy Proxy { get; set; } 
    bool PreAuthenticate { get; set; } 
    int Timeout { get; set; } 
    AuthenticationLevel AuthenticationLevel { get; set; } 
    TokenImpersonationLevel ImpersonationLevel { get; set; } 
    object GetLifetimeService(); 
    object InitializeLifetimeService(); 
    ObjRef CreateObjRef(Type requestedType); 
}