繁体   English   中英

检测通用类型的接口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM