전역 속성을 변경하여 전송되는 개체로 새 변수를 초기화하는 데 문제가 있습니다. 두 클래스가 있습니다 BeltConfiguration
및 BeltProperty
(두 클래스 모두 INotifyPropertyChanged
있습니다). 나는 여기에 보이는 것과 같이 BeltConfiguration
클래스에 globalpropertychanged
메서드를 가지고있다. 내가 그것을 호출 할 때 BeltProperty
클래스에서 전역 속성 변경된 개체 캐스팅 결과 null (C#)
private void BeltProperty_GlobalPropertyChanged(object sender, PropertyChangedEventArgs e)
{
BeltProperty validBelt = sender as BeltProperty;
if (validBelt != null)
{
this.Validation = validBelt.Validation;
}
switch (e.PropertyName)
{
case "Value":
this.Validation.ValidState = ConfigurationValid.Unknown;
OnPropertyChanged("Validate");
break;
case "ConfigurationInvalid":
this.Validation.ValidState = ConfigurationValid.False;
OnPropertyChanged("Validate");
break;
}
}
, 내가 상관없이 내가 뭘,
validBelt
항상
null
되는 결과 없습니다, 그러나
OnGlobalPropertyChanged("ConfigurationInvalid");
와이를 호출합니다. 코드를 살펴보고 객체 발신자를 살펴본 결과, 선언 방법,
GenericParametersAttributes
및
GenericParametersPosition
이
System.InvalidOperationException
을 예외로 던졌습니다.
validBelt
이 발신자를
BeltProperty
으로 허용하지 않는 이유와 관련이 있는지 여부는 알 수 없습니다. 도움이나 조언을 주셔서 감사합니다.
여기는 Belt Property 클래스에서 BeltProperty_GlobalPropertyChanged를 호출 한 곳입니다. validBelt
이 과제 후 null
경우
BeltProperty validBelt = sender as BeltProperty
그것을 보낸 사람이 BeltProperty
의 인스턴스로 캐스팅 할 수 없음을 의미합니다 : 당신이 여기 안전한 캐스트를 사용하고 있기 때문에
private ConfigurationValidation _Validation = new ConfigurationValidation(ConfigurationValid.Unknown, "", "", null);
/// <summary>
/// Stores information as to wether this belt property is valid or invalid, and the details.
/// </summary>
internal ConfigurationValidation Validation
{
get { return _Validation; }
set {
_Validation = value;
if(_Validation.ValidState == ConfigurationValid.False)
{
OnGlobalPropertyChanged("ConfigurationInvalid");
}
}
}
/// <summary>
/// A global on property change that runs for any instantiated object of this type.
/// </summary>
/// <param name="name"></param>
static void OnGlobalPropertyChanged(string name)
{
GlobalPropertyChanged(
typeof(BeltProperty),
new PropertyChangedEventArgs(name));
}
헤이는 일! 도와 주셔서 감사합니다. GlobalPropertyChanged를 변경하는 것은 내가해야 할 일이다. – andrewvb