由于我正在建立一个物理教学平台,我需要知道此刻作用于物体的总力量。通过这种方式,我可以绘制箭头,显示这种合力,让学生了解正在发生的事情。
我挖掘了Farseer的源代码,发现内部Vector2变量强制 。由于它是内部的,我无法从我的教学平台访问它,因为它们在不同的程序集中。
如果我将修改器更改为私有,并为其添加一个getter函数,会发生什么不好的事吗?
OR
是否有更好的方法让合力当前作用于物体?
答案 0 :(得分:1)
由于您似乎可以访问源,因此公开该变量的最简单方法是将公共getter添加到它所在的类中。该类的实例可以访问内部变量。
编辑 :(已添加代码示例)
关于访问内部值的代码存在的全部内容。希望下面的例子能够为您说明这一点。假设您有一个包含两个项目的解决方案,一个名为ExternalAssembly,另一个名为MyApplication。 MyApplication引用ExternalAssembly来访问它的类。
项目: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; }
}
}
}
项目:MyApplication
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);
}
}