修改默认类型参数

问题描述:

我使用泛型如下:修改默认类型参数

public override ValidationResult SelfValidate() 
{ 
    return ValidationHelper.Validate<VendorValidator, Vendor>(this); 
} 

不过,我似乎无法得到的语法完全正确,让我在不同的验证传递给覆盖VendorValidator类型参数。我希望能够使用Type数据类型。

+1

我不确定你想要做什么?您是否想基于仅在运行时已知的类型调用Validate方法? – Sven 2013-05-01 22:03:13

+0

'this'的类型是什么?我猜'供应商'......如果是这样的话,那么你的第二个通用参数可以被暗示,所以你不必明确地定义它。不是你的问题的答案,但可能有助于知道。 – 2013-05-01 22:32:14

+0

@Sven - sorta。有一个默认类型(在这种情况下是'VendorValidator'),我想在某些情况下覆盖它。 – 2013-05-08 12:22:11

您应该添加一个泛型类型参数:

public override ValidationResult SelfValidate<T>() 
{ 
    return ValidationHelper.Validate<T, Vendor>(this); 
} 

你会使用这样的:

this.selfValidate<VendorValidator>(); 

注:我看到你覆盖的方法。如果你不能改变基本方法,这将不起作用。

+0

我不得不做一些重构,但最终成为解决方案。看来我以前走的路不正确。谢谢! – 2013-05-08 12:43:44