gpt4 book ai didi

c# - C#中基于基类动态参数调用在子类中查找方法

转载 作者:行者123 更新时间:2023-11-30 16:10:01 24 4
gpt4 key购买 nike

我有一个基类,它有一个接受接口(interface)的方法。我想在子类中找到最匹配这个接口(interface)的方法。例如:

abstract class Base<T>
{
public T Get(IParam parameter){
return Provide(parameter as dynamic);
}

public abstract T Provide(IParam parameter);
}

class Impl<string> : Base<string>
{
public string Provide(IParam parameter)
{
return "default value";
}

public string Provide(ParamImplementation1 parameter)
{
return "value for implementation 1";
}

public string Provide(ParamImplementation2 parameter)
{
return "value for implementation 2";
}
}

不幸的是每次都返回默认值。当实际实现在子类中时,dynamic 关键字似乎不起作用。有什么方法可以让它发挥作用吗?

最佳答案

因此解决方案似乎是将this 转换为dynamic,如下所示:

abstract class Base<T>
{
public T Get(IParam parameter){
return (this as dynamic).Provide(parameter as dynamic);
}

public abstract T Provide(IParam parameter);
}

class Impl<string> : Base<string>
{
public string Provide(IParam parameter)
{
return "default value";
}

public string Provide(ParamImplementation1 parameter)
{
return "value for implementation 1";
}

public string Provide(ParamImplementation2 parameter)
{
return "value for implementation 2";
}
}

关于c# - C#中基于基类动态参数调用在子类中查找方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590350/

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