В зависимости от необходимых вам функций WebClient
вы можете рассмотреть возможность реализации MyWebClient
в качестве прокси, который предоставляет только те методы, которые вы разрешаете использовать из WebClient
члена.
Пример:
public class MyWebClient
{
private WebClient HiddenWebClient {get; set;}
// proxy sample
public void DownloadFile(string address, string fileName)
{
HiddenWebClient.DownloadFile(address, fileName);
}
// other proxy methods & your specific implementation come here.
}
После этого вам понадобится выделенный ctor и, возможно, фабрика для правильной реализации MyWebClient
.
Это не помешает вашим разработчикам использовать WebClient
это было бы слишком сложно (см., например, предложение @gdoron), но поможет избежать его использования по ошибке.
Редактировать:
Из вашего последнего комментарияЯ думаю, что все, что вам нужно, - это фабрика, которая установит User Agent для всех ваших WebClient
экземпляров.
Затем, в зависимости от вашей организации, вам потребуется четкое информирование о его использовании (и, возможно,инструмент поиска для поиска new WebClient()
в ваших проектах).
public static class WebClientFactory
{
public static WebClient Create()
{
WebClient result = new WebClient();
result.Headers.Add("My Fancy User Agent");
return result;
}
}