2016-06-21 4 views
-6

나는 클래스의 속성 값을 설정하려면이 예를 발견 :변수의 값을 어떻게 설정할 수 있습니까?

Ship ship = new Ship(); 
string value = "5.5"; 
var property = ship.GetType().GetProperty("Latitude"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

을하지만 내 "이"에서 변수의 값을 설정합니다. "속성을"null 인 - 내 주요 형태

나는 개인 이중 "기세"

string value = "5.5"; 
var property = this.GetType().GetProperty("Momentum"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

이 작동하지 않을 수 있습니다.

이것을 달성하려면 위 코드를 어떻게 변경해야합니까?

+1

'자기'란 무엇입니까? – JLRishe

+2

'this.Momentum = 5.5' - 즉, 왜 처음에는 반사를 사용하고 있습니까? – Jamiec

+1

개인 더블 뭐? 필드 또는 속성? – Denis

답변

0

심각하게도 내가 소유 한 변수에서 필드 값을 설정해야하는 경우 왜 리플렉션을 사용합니까?

는 은의 당신이 필드가 아닌 속성이 있다면 ... 당신은 GetField을 사용할 필요가 잊지 좋아

: 그 또한

var value = "5.5"; 
var field = this.GetType().GetField(nameof(Momentum), BindingFlags.NonPublic); 
field.SetValue(self /* or this */, value); 

, 이것은 nameof을 사용하기에 좋은 장소가 될 수도 있지만입니다 그냥 제안.

+0

'Console.WriteLine ("Mom :"+ Momentum); var field = this.GetType(). GetField ("Momentum"); field.SetValue (field, "5.5"); Console.WriteLine ("Mom :"+ Momentum); '일하지 않니? – ManInMoon

+0

미안하지만, 나에게 두 배로 보였다. 올바른 유형을 사용하면 괜찮습니다. –

+0

"field"가 null입니다.
this.GetType(). GetField ("Momentum")이 작동하지 않습니다. – ManInMoon

관련 문제