由于我正在构建物理教学平台,因此我需要知道此刻作用在物体上的总力。这样,我可以画出箭头来显示这种合力,让学生了解正在发生的事情。
我挖掘了 Farseer 的源代码,发现了内部 Vector2 变量Force。由于它是内部的,我无法从我的教学平台访问它,因为它们位于不同的组件中。
如果我将修饰符更改为私有,并为其添加一个 getter 函数,会发生什么不好的事情吗?
或者
有没有更好的方法来获得当前作用在物体上的合力?
由于您似乎可以访问源代码,因此公开该变量的最简单方法是将公共 getter 添加到它所在的类中。该类的实例将有权访问内部变量。
编辑:(添加代码示例)
这完全是关于访问内部值的代码存在的位置。希望下面的示例将为您说明这一点。假设您有一个包含两个项目的解决方案,一个名为 ExternalAssembly,另一个名为 MyApplication。MyApplication 具有对 ExternalAssembly 的引用以访问其类。
项目:外部装配
namespace ExternalAssembly
{
public class MyClass
{
internal string hiddenString;
public MyClass()
{
this.hiddenString = "This is my value.";
}
public string Exposed
{
get { return this.hiddenString; }
}
}
public class MyClass2
{
private MyClass classInstance;
public MyClass2()
{
this.classInstance = new MyClass();
}
public string Exposed2
{
get { return this.classInstance.hiddenString; }
}
}
}
项目:我的应用程序
namespace MyApplication
{
using ExternalAssembly;
public class CallInternalTest()
{
MyClass classInstance = new MyClass();
MyClass2 class2Instance = new MyClass2();
// this will fail since hiddenString is an internal variable
Console.WriteLine(classInstance.hiddenString);
// this will succeed since Exposed is a public member
Console.WriteLine(classInstance.Exposed);
// this will also succeed since Exposed2 is a public member
Console.WriteLine(class2Instance.Exposed2);
}
}