gpt4 book ai didi

C#:保护级别错误

转载 作者:行者123 更新时间:2023-11-30 20:06:01 25 4
gpt4 key购买 nike

//Page 40: Unit Test for Player class
//Player must have a health that is greater than 0
//When the character is created.

namespace UnitTestingSample
{

class PlayerTests
{
public bool TestPlayerIsAliveWhenBorn()
{
Player p = new Player(); //ERROR: 'UnitTestingSample.Player.Player()' is inaccessible due to its protection level

if (p.Health > 0)
{
return true; //pass test
}

return false; //fail test

}//end function

}//end class

}//end namespace

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Page 41
//Player class has default health which is 10
//when his character is created
namespace UnitTestingSample
{

class Player
{
public int Health { get; set; }

Player() //constructor
{
Health = 10;
}
}
}

===============

你看,这就是让我难过的原因。

此代码来自名为“C# Game Programming: For Serious Game Creation”的书。

我从本书的光盘中得到了完全相同的代码。那个示例代码没问题,而我的有错误。

这是我第一次使用 C# 编写游戏代码。然而,据我所知,我的应该工作。但是,看起来编译器并不这么认为。

我该如何解决这个问题?

最佳答案

我遇到了类似的问题,发现这篇博客文章很有帮助 http://softwareonastring.com/316/why-cant-my-test-access-a-public-constructor

它建议的具体解决方案是在你要测试的项目AssemblyInfo.cs文件中加入下面一行

[assembly: InternalsVisibleTo("TestProject")]

(其中TestProject改成你的测试工程程序集的名字)

以及右键单击单元测试项目中的引用并添加对您正在测试的项目的引用。

这只推荐用于单元测试,因为它将两个项目紧密地结合在一起,并且会违背正常的面向对象的最佳实践。

关于C#:保护级别错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263581/

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