gpt4 book ai didi

C# 增强方法重载解析

转载 作者:太空狗 更新时间:2023-10-29 23:24:52 26 4
gpt4 key购买 nike

class Base {}
class ClassA : Base {}
class ClassB : Base {}
public static class ExtensionFunctions
{
public static bool DoSomething(this Base lhs, Base rhs)
{
return lhs.DoSomethingElse(rhs);
}

public static bool DoSomethingElse(this Base lhs, Base rhs) { return true; }
public static bool DoSomethingElse(this ClassA lhs, ClassA rhs) { return false; }
public static bool DoSomethingElse(this ClassA lhs, ClassB rhs) { return false; }
public static bool DoSomethingElse(this ClassB lhs, ClassA rhs) { return false; }
public static bool DoSomethingElse(this ClassB lhs, ClassB rhs) { return false; }
}

鉴于上面的代码块除了调用第一个 DoSomethingElse 方法之外实际上没有做任何事情,根据传递给 DoSomething 方法的参数的真实类型进行正确方法调用的聪明方法是什么?

有没有办法让我在运行时解析方法调用,或者我是否必须使用“if typeof”风格的代码解析?

最佳答案

您可以使用 dynamic 关键字:

public static bool DoSomething(this Base lhs, Base rhs)  
{
return DoSomethingElse((dynamic)lhs, (dynamic)rhs);
}

关于C# 增强方法重载解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293841/

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