gpt4 book ai didi

c# - 模板模式变体问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:12:12 25 4
gpt4 key购买 nike

实现类“thefoo”从其构造函数中获取一个整数。但是基类“foo”看不到它的构造函数值“input”。因为 base ctor 首先工作。我需要某种方式来告诉基础实现者的构造函数值。在不改 rebase 础的情况下,我可以通过以下失败测试吗?

public abstract class foo
{
int noImplementerKnowsThatValue = 0;
protected abstract int intro();
protected abstract int outtro();

public foo()
{
noImplementerKnowsThatValue += intro ();
}

public int compose ()
{
return noImplementerKnowsThatValue + outtro ();
}
}
public class theFoo : foo
{
int value;

public theFoo (int input)
{
value = input;
}

protected override int intro ()
{
return value;
}

protected override int outtro ()
{
return 100;
}
}

public class fooTest
{
public void failingTest ()
{
var foo = new theFoo (100);
int x = foo.compose ();
Debug.Assert (200 == x);
}
}

最佳答案

你不能。除非您更改基类,否则不会。

嗯,我想你可以做

protected override int intro ()
{
return 0;
}
protected override int outtro ()
{
return 100 + value;
}

但我认为这不是你的意思。它并没有解决这个问题的一般情况(例如,如果不是 int 而是 string)。

关于c# - 模板模式变体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232299/

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