获得作用于身体的力量

时间:2012-11-11 01:34:28

标签: c# xna farseer

由于我正在建立一个物理教学平台,我需要知道此刻作用于物体的总力​​量。通过这种方式,我可以绘制箭头,显示这种合力,让学生了解正在发生的事情。

我挖掘了Farseer的源代码,发现内部Vector2变量强制 。由于它是内部的,我无法从我的教学平台访问它,因为它们在不同的程序集中。

如果我将修改器更改为私有,并为其添加一个getter函数,会发生什么不好的事吗?

OR

是否有更好的方法让合力当前作用于物体?

1 个答案:

答案 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);
    }
}