По сути, я создал вспомогательный метод для объекта проверки, который я использую.Код выглядит так:
public class ValidationSet<TSource> : ValidationSet
{
public void AddValidationErrorFor<TProperty>(Expression<Func<TSource, TProperty>> propertyLambda, string errorMessage, string data = null)
{
// extension method
PropertyInfo property = propertyLambda.GetPropertyInfo();
Add(new ValidationItem
{
Key = property.Name,
Message = errorMessage,
DataMessage = data
});
}
}
public class ValidationSet : List<ValidationItem>
{
public void AddValidationError(string key, string errorMessage)
{
Add(new ValidationItem
{
Key = key,
Message = errorMessage
});
}
}
По сути, что происходит (и это работает), так это то, что я могу написать что-то вроде этого:
public class SomeObject
{
public int Id { get; set; }
public string SomeValue { get; set; }
}
А потом, когда я хочу проверитьэто, я могу написать что-то вроде этого:
ValidationSet<SomeObject> validationSet = new ValidationSet<SomeObject>();
if(SomeValue.Contains("SomeOtherValue"))
validationSet.AddValidatorErrorFor(x => x.SomeValue, "Some Error");
Это все в настоящее время компилируется.Тем не менее, я не получаю intellisense для моего лямбда-выражения в последней строке.Я должен вручную набрать x.SomeValue
, хотя все это прекрасно компилируется.Кто-нибудь знает, чего не хватает, чтобы получить intellisense?