gpt4 book ai didi

c# - 转换为未明确实现的接口(interface)?

转载 作者:可可西里 更新时间:2023-11-01 07:51:04 27 4
gpt4 key购买 nike

假设您定义了一些任意接口(interface):

public interface IInterface {
void SomeMethod();
}

假设有些类碰巧有一个匹配的公共(public)接口(interface),即使它们没有“实现IInterface”。即:

public class SomeClass {
public void SomeMethod() {
// some code
}
}

有没有办法让 IInterface 引用一个 SomeClass 实例?即:

SomeClass myInstance = new SomeClass();
IInterface myInterfaceReference = (IInterface)myInstance;

最佳答案

不,没有办法做到这一点。如果该类型没有实现接口(interface),则无法转换为它。实现类似于您想要的行为的最佳方法是创建一个包装器类型,它为 SomeClass 提供 IInterface 的实现。

public static class Extensions {
private sealed class SomeClassWrapper : IInterface {
private readonly SomeClass _someClass;

internal SomeClassWrapper(SomeClass someClass) {
_someClass = someClass;
}

public void SomeMethod() {
_someClass.SomeMethod();
}
}

public static IInterface AsIInterface(this SomeClass someClass) {
return new SomeClassWrapper(someClass);
}
}

然后就可以进行如下调用了

SomeClass myInstance = new SomeClass();
IInterface myInterface = myInstance.AsIInterface();

关于c# - 转换为未明确实现的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719236/

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