[英]Detecting Interfaces in Generic Types
我有一个方法:
public void StoreUsingKey<T>(T value) where T : class, new() {
var idModel = value as IIDModel;
if (idModel != null)
Store<T>(idModel);
AddToCacheUsingKey(value);
}
我想根据value
参数对IIDModel
的实现,有选择地调用以下方法。
public void Store<T>(T value) where T : class, IIDModel, new() {
AddModelToCache(value);
}
有没有办法告诉Store<T>
StoreUsingKey<T>
的value
参数实现IIDModel
? 还是我走错路了?
丰富
回答
从每个方法中删除new()
约束可使代码正常工作。 问题出在我身上,我试图将接口作为可以实例化的对象传递出去。
你已经是 通过将IIDModel约束放在Store <T>方法上,可以保证value参数实现IIDModel。
哦,好的,我明白你现在在说什么。 这个怎么样:
public void StoreUsingKey<T>(T value) where T : class, new() {
if (idModel is IIDModel)
Store<T>((IIDModel)idModel);
AddToCacheUsingKey(value);
}
再次编辑: Tinister是正确的。 这本身不会解决问题。 但是,如果您的Store方法看起来像Joel Coehoorn发布的内容 ,那么它应该可以工作。
public void Store(IIDModel value) {
AddModelToCache(value);
}
从每个方法中删除new()
约束可使代码正常工作。 问题出在我身上,我试图将接口作为可以实例化的对象传递出去。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.