我正在尝试编写一个 ValidationRule 来检查字符串是否为空:
public class NotNullValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string str = value as string;
return string.IsNullOrEmpty(str) ? new ValidationResult(false, Application.Current.FindResource("EmptyStringNotAllowed")) : ValidationResult.ValidResult;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的窗口中,我像这样使用它:
<TextBox
Name="TxtDescription"
Width="Auto"
controls:TextBoxHelper.Watermark="{DynamicResource Description}">
<TextBox.Text>
<Binding Path="MachineToEdit.Description">
<Binding.ValidationRules>
<validation:NotNullValidationRule ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
如果我启动设计器,我会得到这个 NullReferenceException:
at System.Windows.Data.BindingExpression.RunValidationRule(ValidationRule validationRule, Object value, CultureInfo culture)
at System.Windows.Data.BindingExpression.ValidateOnTargetUpdated()
at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.Activate(Object item)
at System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt attempt)
at System.Windows.Data.BindingExpression.MS.Internal.Data.IDataBindEngineClient.AttachToContext(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Task.Run(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Run(Object arg) …Run Code Online (Sandbox Code Playgroud) 我正在尝试向不同板条箱中的特征添加扩展方法。此特征具有指定的关联类型。
pub trait Test<W> {
type Error;
fn do_sth(&mut self) -> Result<W, Self::Error>;
}
Run Code Online (Sandbox Code Playgroud)
为什么不能添加使用关联类型的方法Error?
impl dyn Test<u8> {
fn use_do_sth(&mut self) -> Result<u8: Self::Error> {
self.do_sth()
}
}
Run Code Online (Sandbox Code Playgroud)