下面的代码在MemoryCache
中添加一些对象。这些对象可以有不同的类型。方法返回值取决于收集项目类型
我想要一个方法能够从MemoryCache
返回对象,但返回类型可以不同。
在我的示例中,它是2但可以更多。在我的示例中,返回类型为IT1
或List<IT2>
如何实现此方法?
我想这样的方法(返回可以根据按键不同的类型):
public ??? GetObjectFromKey(string key)
{
return _cache.Get(key);
}
感谢,
MemoryCache _cache = MemoryCache.Default;
var it1 = new T1 { Name = "My" };
var it2 = new List<IT2>().Add(new T2 { Age = 5 });
_cache.Add("ITC1", it1, new CacheItemPolicy());
_cache.Add("ITC2", it2, new CacheItemPolicy());
var typeName = _cache.Get("ITC1").GetType();
public interface IT1
{
string Name { get; set; }
}
public class T1 : IT1
{
public string Name { get; set; }
}
public class T2 : IT2
{
public int Age { get; set; }
}
public interface IT2
{
int Age { get; set; }
}
什么问题? –
因此,您可以使用泛型的反射来调用带有正确类型参数的get方法,但是如何比返回对象更好。在编译时,你不会知道类型(因为你不知道类型!),你可以使用GetType找到它,如果你只是返回一个对象, –
Voila,更新:) –