【问题标题】:Best practice, create interface of WebRequest最佳实践,创建WebRequest的接口
【发布时间】:2011-02-17 20:15:02
【问题描述】:

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

【问题讨论】:

  • 我想第一个也是最重要的问题是......为什么?你想做什么?

标签: c# .net-4.0


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 2019-04-08
    • 2016-10-20
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多