gpt4 book ai didi

c# - 如何限制对其他公共(public)接口(interface)实现的内部接口(interface)的访问

转载 作者:行者123 更新时间:2023-11-30 21:09:43 25 4
gpt4 key购买 nike

使用 C# 和 NET 4.0,我有两个实现内部接口(interface) (IMethod) 的公共(public)接口(interface)(IAsyncMethod 和 ISyncMethod),我需要将公共(public)访问修饰符设置为前两个,将内部访问修饰符设置为第三个,这样我就可以仅为另一个 dll/项目/开发人员启用两个公共(public)接口(interface)。

internal interface IPaymentMethod
{
XmlDocument StartTransaction(XmlDocument parameters);
XmlDocument QueryTransaction(XmlDocument parameters);
}

public interface ISyncMethod : IMethod
{
void EndTransaction(TransactionDTO parameter);
}

public interface IAsyncMethod : IMethod
{
void EndTransaction(TransactionDTO parameter);
}

当我构建项目时,我收到以下错误:

Inconsistent accessibility: base interface 'IMethod' is less accessible than interface 'ISyncMethod'
Inconsistent accessibility: base interface 'IMethod' is less accessible than interface 'IAsyncMethod'

我将如何设置修饰符以允许我需要的行为?

最佳答案

这不是“如何设置修饰符”的问题,而是继承基础的问题:让我们看看(在第三方代码中)

ISyncMethod sm=new ClassImplementingISyncMethod();
IMethod m=(IMethod) sm;

这是有效的,因为 ISyncMethod 继承自 IMethod。如果无法访问 IMethod,这当然是不可能的。

有效但不可能的组合,编译器不喜欢。

关于c# - 如何限制对其他公共(public)接口(interface)实现的内部接口(interface)的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895426/

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