在C#8.0中,某些成员的接口可以具有默认实现。这些实现是显式的,意味着它们无法通过类实例进行访问,我们必须强制转换为接口类型来调用它们。有没有办法在具有相同名称的类实例上公开此实现?可以通过将this指针强制转换为接口类型并像下面这样调用方法来以其他名称公开它:
void A()
{
((ISomething)this).B();
}
但是我似乎找不到一种以原始名称B公开实现的方法,因为如果我声明一个方法B,它就算是实现导致无限递归的接口的方法。有什么办法可以暴露实现而不复制它,或者我缺少什么?
为澄清起见,我正在寻找一种实现类似特征的功能的方法,即能够在不更改方法名称的情况下将实现从接口直接导入到类的公共API中(大概接口中的名称是最好的)。问题不在于如何以该类的用户身份调用该方法,而是如何使其成为该类的公共API的一部分。
扩展方法是一种解决方案,但是默认接口实现可以访问受保护的成员,并且可以重载。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句