gpt4 book ai didi

c# - 找不到合适的方法来重写抽象方法

转载 作者:行者123 更新时间:2023-11-30 16:37:05 25 4
gpt4 key购买 nike

我一定是忽略了一些简单的事情。我正在尝试更新曾经用于编译的类。我主要是将不同 namespace 下的类似类换成新代码,可以说是清理。

我有一种方法,TakeAction,它对我来说并不重要。父(抽象)类:

namespace MyNamespace.StandardNoteReceiverService 
{
public abstract class NoteReceiverHandler : BaseIntegrationService
{
private Vendor.Sys.Services.ReceiveNoteData _ReceiveNoteData;

public NoteReceiverHandler() {}

public NoteReceiverHandler(Vendor.Sys.Services.ReceiveNoteData receiveNoteData)
{
this._ReceiveNoteData = receiveNoteData;
}

public abstract Vendor.Sys.Services.ReceiveNoteResponse TakeAction(Vendor.Sys.Services.ReceiveNoteData receiveNoteData);
}
}

抽象类的实现:

public class Sys2Handler : NoteReceiverHandler 
{
public override Vendor.Sys.Services.ReceiveNoteResponse TakeAction(Vendor.Sys.Services.ReceiveNoteData receiveNoteData)
{
return new Vendor.Sys.Services.ReceiveNoteResponse();
}

我是不是忽略了什么?即使我使用“快速操作和重构”来生成抽象类,也会发生这种情况。

最佳答案

以下代码提供所有类都具有相同的公共(public)可访问性,在单个或多个程序集中完美编译。

namespace StandardNoteReceiverService
{

public abstract class NoteReceiverHandler : BaseIntegrationService
{
private Vendor.Sys.Services.ReceiveNoteData _ReceiveNoteData;

public NoteReceiverHandler() { }

public NoteReceiverHandler(Vendor.Sys.Services.ReceiveNoteData receiveNoteData)
{
this._ReceiveNoteData = receiveNoteData;
}

public abstract Vendor.Sys.Services.ReceiveNoteResponse TakeAction(Vendor.Sys.Services.ReceiveNoteData receiveNoteData);
}

public class Sys2Handler : NoteReceiverHandler
{
public override Services.ReceiveNoteResponse TakeAction(Services.ReceiveNoteData receiveNoteData)
{
throw new NotImplementedException();
}
}
}

可能阻止编译的唯一问题是不同的可访问性修饰符或不同/冲突的类型标识,.NET 将其定义为:

类型名称、程序集名称、程序集版本、程序集公钥签名

确保所有依赖树都是正确的,可访问性是一样的,然后尝试重新编译。满足第一个条件对于大型项目来说可能是一个挑战,因此也许您应该使用依赖关系树遍历器来检查所有依赖关系是否正确。

请记住,正确的版本控制可以避免许多类似的错误,尤其是在大型代码库中。

关于c# - 找不到合适的方法来重写抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com