나는 이라는 서비스를 SoapHttpClientProtocol
에서 상속 받았습니다.C# : 다른 서비스에서 다중 상속없이 한 클래스의 함수를 재정의하는 방법
또한 ServiceA
에서 상속 된 클래스 ProcessingHelperClass
이 있으며 일부 재정의 된 기능과 두 개의 추가 필드가 있습니다.
나는 많은 ServiceA
종류의 서비스를 가지고 있습니다. 그리고 나는 그들 모두를 위해 오버라이드 된 함수로 내 class
을 생성해야한다.
질문 : 포함하는 모든 서비스에 대해 새 클래스를 만들 필요가 없으므로 다른 서비스에 대한 재정의 기능 및 추가 필드가있는 클래스를 만드는 방법이 있습니까?
그리고 내 질문은 프로그램의 의미에서 아주 나쁜 경우 내가 초보자에게있어, 나는, 왜 배울 기쁠UPD : 의사 코드 Reference.cs (서비스 프록시 클래스 파일)
public partial class ServiceA : SoapHttpClientProtocol
{
public void Method1(){};
public void Method2(){};
//etc...
}
ProcessingHelperClass.cs
public class ProcessingHelperClass: ServiceA, IDisposable
{
private XmlWriter _xmlWriter;
public String StringA => xmlWriter == null? "" : _xmlWriter.Xml;
...
protected override XmlWriter GetWriterForMessage(System.Web.Services.Protocols.SoapClientMessage message, int bufferSize)
{
var writer = base.GetWriterForMessage(message, bufferSize);
_xmlWriterSpy = new XmlWriterSpy(writer);
return _xmlWriterSpy;
}
}
Program.cs
static void Main(string[] args)
{
ProcessingHelperClass client = new ProcessingHelperClass();
client.Method1();
Console.Writeline(client.StringA);
}
의사 코드를 올리시겠습니까? 원하는 것을 수행 할 수 있습니까? – Dennis
https://en.wikipedia.org/wiki/Composition_over_inheritance에서 살펴보십시오. 당신은 implement - methods를 클래스의 인스턴스를 서비스의 멤버 *로 추가하여 원하는 것을 구현해야한다. 실제 메서드가 다른 클래스에 저장되기 때문에이 경우 SoapHttpClientProtocol에서 파생 될 필요가 없습니다. – HimBromBeere
가상 코드가 추가되었습니다. 희망이 도움이됩니다. 잘못된 것이 있으면 알려주세요. – anindis