2012-11-11 3 views
1

물리학 교수 플랫폼을 구축하고 있기 때문에, 나는 그 순간에 물체에 작용하고있는 총 힘을 알아야합니다. 이 방법으로, 나는 학생들이 무슨 일이 일어나고 있는지 이해할 수있는 합력을 보여주는 화살표를 그리게됩니다.몸체에 작용하는 힘 받기.

나는 Farseer의 소스를 파고 내부 Vector2 변수 포스을 발견했다. 내부적이기 때문에 다른 어셈블리에 있기 때문에 교육 플랫폼에서 액세스 할 수 없습니다.

수식어를 변경하면 아무 일도 일어나지 않을 것입니다. private라고 말하면서 getter 함수를 추가할까요?

또는

물체에 작용하는 현재 합력을 얻을 수있는 더 나은 방법이 있나요?

+2

그 다음 당신이, 공공 민간하지 만들고 싶어 내부에 있기 때문에 당신이 그것을 액세스 할 수없는 경우. 소스를 수정하는 중이므로 변수를 그대로두고 변수를 반환하는 고유 한 속성을 만들 수 있습니다. – TyCobb

답변

1

소스에 액세스 할 수있는 것 같기 때문에 변수를 공개하는 가장 쉬운 방법은 공용 getter를 상주하는 클래스에 추가하는 것입니다. 해당 클래스의 인스턴스는 내부 변수에 액세스 할 수 있습니다.

EDIT (코드 추가 예)

그것은 모든 내부 값을 액세스 코드가 존재하는 위치에 대한 것이다. 바라기를 아래의 예제는 이것을 보여줍니다. 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); 
    } 
} 
+0

어셈블리 외부에서 "내부"변수에 액세스 할 수 있습니까? 수정 자도 변경하면 안됩니까? – Felastine

+0

내 대답이 업데이트되었으므로 코드가 이해하는 데 도움이됩니다. – nabrond