好的..希望我已经理解你的要求:
class GetStoreNumberFromNameAttribute : Attribute {
}
class Class1 {
[GetStoreNumberFromName]
public string store { get; set; }
}
class Validator<T>
{
public bool IsValid(T obj)
{
var propertiesWithAttribute = typeof(T)
.GetProperties()
.Where(x => Attribute.IsDefined(x, typeof(GetStoreNumberFromNameAttribute)));
foreach (var property in propertiesWithAttribute)
{
if (!Regex.Match(property.GetValue(obj).ToString(), @"^\d+$").Success)
{
property.SetValue(obj, Regex.Match(property.GetValue(obj).ToString(), @"\d+").Groups[0].Value);
}
}
return true;
}
}
..用法:
var obj = new Class1() { store = "1234 - Test" };
Validator<Class1> validator = new Validator<Class1>();
validator.IsValid(obj);
Console.WriteLine(obj.store); // prints "1234"
..显然需要对您进行一些更改..但它应该给您一个想法(我知道方法命名可能不是最好的.. :/)
如果我完全错过了这一点,请告诉我,我将删除。