Извлечение интерфейсов - не лучший план, если вы заинтересованы в частных методах.
Использование абстрактных классов означает существенное изменение дизайна приложения (и я думаю, что без необходимости увеличивать сложность) для поддержки требования «представления». Частичные классы не показывают полную публичную и личную подпись в одном месте, так что это тоже не идеально.
Так что, если у вас нет IDE или вы не хотите его использовать, я бы использовал стандартное действие дизассемблирования в Reflector (бесплатно, и в любом случае это отличная игрушка):
http://www.red -gate.com / продукты / отражатель / index.htm
например. System.Web.Caching.Cache
public sealed class Cache : IEnumerable
{
// Fields
private CacheInternal _cacheInternal;
public static readonly DateTime NoAbsoluteExpiration;
public static readonly TimeSpan NoSlidingExpiration;
// Methods
static Cache();
[SecurityPermission(SecurityAction.Demand, Unrestricted=true)]
public Cache();
internal Cache(int dummy);
public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
public object Get(string key);
internal object Get(string key, CacheGetOptions getOptions);
public IDictionaryEnumerator GetEnumerator();
public void Insert(string key, object value);
public void Insert(string key, object value, CacheDependency dependencies);
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration);
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);
public object Remove(string key);
internal void SetCacheInternal(CacheInternal cacheInternal);
IEnumerator IEnumerable.GetEnumerator();
// Properties
public int Count { get; }
public long EffectivePercentagePhysicalMemoryLimit { get; }
public long EffectivePrivateBytesLimit { get; }
public object this[string key] { get; set; }
}