gpt4 book ai didi

c# - C# 4.0 中的双重调度 - 动态关键字?

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

我意识到之前有人问过这个问题,但我没有找到关于最佳解决方案的明确协议(protocol)。

使用动态(如下所示)是执行此操作的最佳方法吗?我想最好尽可能避免动态,以帮助在编译时发现问题。

(classA1 和 classA2 实现接口(interface) A,同样适用于 B)

 public static void Foo(InterfaceA a, InterfaceB b) 
{
Foo((dynamic)a, (dynamic)b);
}

static void Foo(classA1 a, classB1 b) { //some code }
static void Foo(classA2 a, classB2 b) { //some code }
static void Foo(classA1 a, classB2 b) { //some code }
static void Foo(classA2 a, classB1 b) { //some code }

或者类似的...

public static void Foo(InterfaceA a, InterfaceB b) 
{
((dynamic) a).Foo(b);
}

public classA1
{
void Foo(classB1 b) { //some code }
}
//repeated for other cases

最佳答案

Is using dynamic (like below) the best way to do this?

好吧,这是一种的方式 - 只要执行时类型总是以重载解析会满意的方式结束。

你可能想要放置一个 backstop 方法

static void Foo(object x, object y)

如果所有方法都不适用(例如 a 是非 ClassA1/ClassA2 实现)。请注意,如果两个值都为空,它不会帮助您......

我通常会尝试重新设计,这样这不是必需的,但如果没有更多上下文,很难知道最佳解决方案。

关于c# - C# 4.0 中的双重调度 - 动态关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827971/

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