Переопределить конструктор по умолчанию для частичного класса другим классом - PullRequest
51 голосов
/ 29 октября 2008

Я не думаю, что это возможно, но если это так, мне это нужно:)

У меня есть автоматически сгенерированный прокси-файл из инструмента командной строки wsdl.exe от Visual Studio 2008.

Выход прокси - это частичные классы. Я хочу переопределить конструктор по умолчанию, который создается. Я бы предпочел не изменять код, поскольку он генерируется автоматически.

Я попытался создать еще один частичный класс и переопределить конструктор по умолчанию, но это не сработало. Затем я попытался использовать переопределение и новые ключевые слова, но это не сработало.

Я знаю, что могу наследовать от частичного класса, но это означало бы, что мне придется изменить весь наш исходный код, чтобы он указывал на новый родительский класс. Я бы предпочел не делать этого.

Есть идеи, обходные пути или хаки?

//Auto-generated class
namespace MyNamespace {
   public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
      public MyWebService() {
         string myString = "auto-generated constructor";
         //other code...
      }
   }
}

//Manually created class in order to override the default constructor
namespace MyNamespace {
   public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol {
      public override MyWebService() { //this doesn't work
         string myString = "overridden constructor";
         //other code...
      }
   }
}

Ответы [ 11 ]

0 голосов
/ 29 октября 2008

Ничего, о чем я могу думать. «Лучший» способ, которым я могу придумать, это добавить ctor с фиктивным параметром и использовать его:

public partial class MyWebService : System.Web.Services.Protocols.SoapHttpClientProtocol 
{
   public override MyWebService(int dummy) 
   { 
         string myString = "overridden constructor";
         //other code...
   }
}


MyWebService mws = new MyWebService(0);
...