【发布时间】:2014-12-11 08:15:31
【问题描述】:
假设我有这个:
public class BaseEntity {}
public class Product : BaseEntity {}
public interface IPreLoad<T> where T : BaseEntity
{
void Preload();
}
public class ProductService : IPreload<Product>
{
public void Preload()
{
//Do something
}
}
//Returns list of types implementing IPreload<>
var preloaders = typeFinder.FindClassesOfType(typeof(IPreLoad<>)).ToList();
foreach (var preloaderType in preloaders)
{
var preloader = (IPreLoad<BaseEntity>)EngineContext.Current.ResolveUnregistered(preloaderType);
cacheManager.Get(preloader.PreLoadCacheKey, () => preloader.PreLoad());
}
我遇到的问题是我无法将ProductService : IPreLoad<Product> 转换为IPreLoad<BaseEntity>,而且我不知道如何才能实现相同的结果。基本上,我想创建这个服务的一个实例并调用 preload。
不执行转换工作正常,它会创建一个实例,但由于我没有将它转换为任何东西,我无法根据接口对其进行任何调用。
【问题讨论】:
标签: c# reflection interface