Typeをキーにしたキャッシュを作る場合、オーソドックスにConcurrentDictionary使う方法�@と、static class<T>使う方法�Aのメリット・デメリットってどんなもん?

�@
public static string GetName<T>(T source) {
 return cache.GetOrAdd(typeof(T), t => t.GetProperties()[0].Name);
}
private static ConcurrentDictionary<Type, string> cache = new ConcurrentDictionary<Type, string>();

�A
public static string GetName<T>(T source) {
 return Cache<T>.Name;
}
private static class Cache<T> {
 static Cache {
  Name = typeof(T).GetProperties()[0].Name;
 }
 public static readonly string Name;
}