编辑以显示真实示例

如何从传递给函数的泛型类型调用泛型函数?这似乎应该很直观,但是我似乎无法使其正常工作。

例如,我可以在下面的LocalDataObjectEngine中调用cache.ResetCache()函数吗?

我收到的错误是“类型T不能用作参数”

public interface ISimpleCache<T1>
{
    ...
    void ResetCache<T>() where T : T1;
}

internal class LocalDataObjectEngine_Cache : ISimpleCache<IBrokeredDataObject>
{
    ISimpleCache<IBrokeredDataObject> _cache;

    ...

    public void ResetCache<T>() where T : IBrokeredDataObject
    {
        //logic here
    }

    ...
}

public partial class LocalDataObjectEngine : IEngine
{
    ISimpleCache<IBrokeredDataObject> _cache  = new LocalDataObjectEngine_Cache();

    public void ResetCache<T>() where T : IBrokeredDataObject
    {
        _cache.ResetCache<T>();
    }
}

}

最佳答案

我不确定发生了什么,除非您的IBrokeredDataObject定义中有某些内容。您写的内容对我来说不错,可以编译。

[根据OP中的编辑进行了编辑]

关于c# - 如何在通用方法中使用通用类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/452743/

10-10 03:46