Ich arbeite derzeit mit dem nopCommerce Quellcode und versuche mein Bestes, die Bearbeitung der Quelle überhaupt zu vermeiden, sondern stattdessen Teilklassen und Plugins, die getrennt vom Quellcode sind, sollten wir jemals müssen Versionen aktualisieren.Überschreiben Sie eine virtuelle Methode in einer partiellen Klasse
Ich möchte einige Änderungen an dem Code machen, die einen Auftrag, durch eine partielle Klasse in derselben Baugruppe mit:
Orignal Source Code:
namespace Nop.Services.Orders {
public partial class OrderProcessingService : IOrderProcessingService {
public virtual PlaceOrderResult PlaceOrder(ProcessPaymentRequest processPaymentRequest)
{ //....
Meine Teilklasse:
namespace Nop.Services.Orders {
public partial class OrderProcessingService : IOrderProcessingService {
public override PlaceOrderResult PlaceOrder(ProcessPaymentRequest processPaymentRequest) { //....
Wenn ich versuche, diesen Code zu kompilieren, bekomme ich einen Fehler:
Type 'Nop.Services.Orders.OrderProcessingService' already defines a member called 'PlaceOrder' with the same parameter types
Aber ich benutze override
und die Methode in der ursprünglichen Klasse ist virtual
, könnte mir jemand sagen, wo ich hier falsch liege, und wie ich diese Methode überschreiben könnte?
'override' und' virtual' steht für Vererbung, 'partielle' Klassen gelten nicht als Vererbung. – Matthew
gibt es eine andere Möglichkeit, die Methode zu überschreiben? Ich denke, der Grund, warum nopCommerce partielle Klassen überall verwendet, ist, dass Erweiterungen vorgenommen werden können, ohne den Quellcode zu ändern. – DevDave
Typischerweise werden 'partielle' Klassen in Verbindung mit automatisch generiertem Code verwendet. Um die Methode 'PlaceOrder' zu überschreiben, würden Sie eine Klasse erstellen, die' OrderProcessingService' erbt. – Matthew