下面的代碼在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,更新:) –