In Java I can declare a method like: public boolean doSth(Cache<?> cache, CacheItem item){...}
public interface Cache<T> {
public boolean Contains(T item);
}
public class CacheFilePath implements Cache<FilePathItem> {
@Override
public boolean Contains(FilePathItem item) {
return false; // TODO
}
}
public class ItemHandler {
public boolean doSth(Cache<?> cache, CacheItem item){
if(cache instanceof CacheHostName && item instanceof HostNameItem){
CacheHostName c = (CacheHostName) cache;
HostNameItem i = (HostNameItem) item;
return check(c, i);
}
else if(cache instanceof CacheFilePath && item instanceof FilePathItem){
CacheFilePath c = (CacheFilePath) cache;
FilePathItem i = (FilePathItem) item;
return check(c, i);
}
throw new RuntimeException("Invalid arguments !!!");
}
private boolean check(Cache<HostNameItem> cache, HostNameItem item){
return cache.Contains(item);
}
private boolean check(Cache<FilePathItem> cache, FilePathItem item){
return cache.Contains(item);
}
}
How can I declare such a method in C#?