아래 코드는 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, 업데이트 됨 : –