我有一個使用IoC和Microsoft Unity的域模型。 對於驗證我使用VAB和我裝飾接口,而不是實體。 代碼如下:使用IoC驗證接口
interface IJob : IValidable
{
[NotNullValidator]
string Name { get; set; }
}
interface IValidable
{
bool IsValid { get; }
void ValidationResults Validate();
}
class Job : IJob
{
string Name { get; set; }
public virtual bool IsValid
{
get { try
{
return Validate().IsValid;
}
catch
{
return false;
} }
}
public ValidationResults Validate()
{
return Validation.Validate(this);
}
}
如果我直接裝飾與VAB的類屬性,驗證工作。如果我只在界面中使用驗證,它不會。 這就是我們如何使一個新的實例:
ioC.RegisterType<IJob, Job>();
IJob job = ioC.Resolve<IJob>();
return job.IsValid;
代碼工作如果驗證屬性也都在類,否則就沒有。 爲什麼?