我有这个方法:
public partial class Client : ConfigItem
{
public void ValidateForInsert(ASystem defaultSystem, IEnumerable<Client> currentConfig)
{
if (this.Source == defaultSystem.SystemName)
{
throw new InvalidOperationException(AMessage);
}
if (SomeOtherValidation())
{
throw new InvalidOperationException(AnOtherMessage);
}
}
}
它将存在于许多不同的类型上,所有这些类型都继承自 CofigItem
所有代码都是相同的,所以我想把它移到基类中。除了参数包含 IEnumerable< ThisClassesType > currentConfig
如果我把它放在基类中IEnumerable<ConfigItem>
,我必须用它来调用它:
client.ValidateOnInsert(defaultSystem, currentConfig.Cast<ConfigItem>());
这似乎有点愚蠢,因为诸如此类的东西client
总是基于.ConfigItem
反正有没有像这样的东西:
public void ValidateOnInsert(ASystem system, IEnumerable<T> currentConfig) where T : ConfigItem
(?)
或者只是以任何方式使整洁,不需要重复的代码或大量的转换?
谢谢,
J1M