public static T GetDlcInternal <T>([NotNull] this IWorkingContext workingContext,
                                           string serviceId,
                                           bool throwExceptionOnFailure)
            where T : class
        {
            if (workingContext == null)
            {
                throw new ArgumentNullException("workingContext");
            }
            if (string.IsNullOrEmpty(serviceId))
            {
                throw new ArgumentNullException("serviceId");
            }
            object obj1 = workingContext.DlcManager.Load(serviceId, throwExceptionOnFailure);

            if (obj1 == null && throwExceptionOnFailure)
            {
                throw new DlcManagerException(string.Format("Could not load Dlc with service id '{0}'.", serviceId));
            }
            T obj2 = ServiceProviderHelper.AccessService <T>(obj1);

            if (obj2 == null && throwExceptionOnFailure)
            {
                throw new DlcManagerException(string.Format("Dlc with service id '{0}' does not implement '{1}'.", serviceId, typeof(T).FullName));
            }
            return(obj2);
        }