C# 最佳实践,创建WebRequest的接口

C# 最佳实践,创建WebRequest的接口,c#,.net-4.0,C#,.net 4.0,如果我要创建一个System.net.WebRequest的接口,那么最好的方法是什么?对于David的观点,您首先需要确定要对该接口执行什么操作,然后才能决定它需要哪些成员。如果您想要一个用于单元测试的接口,我建议使用单独的方法。看看投票率最高的答案 但是,要严格按照要求回答您的问题,因为您不能修改WebRequest类,您首先要将其子类化为: public class MyWebRequest : WebRequest, IMyWebRequest { } 然后,您可以将WebReques

如果我要创建一个
System.net.WebRequest
的接口,那么最好的方法是什么?

对于David的观点,您首先需要确定要对该接口执行什么操作,然后才能决定它需要哪些成员。如果您想要一个用于单元测试的接口,我建议使用单独的方法。看看投票率最高的答案

但是,要严格按照要求回答您的问题,因为您不能修改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);
}