示例#1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="assembly">assembly containing embedded resource</param>
        /// <param name="resourceName">resource name in assembly</param>
        public EmbeddedResource(Assembly assembly, string resourceName)
        {
            Assembly = Code.ExpectsArgument(assembly, nameof(assembly), TaggingUtilities.ReserveTag(0x238208c0 /* tag_9669a */));
            Name     = Code.ExpectsNotNullOrWhiteSpaceArgument(resourceName, nameof(resourceName), TaggingUtilities.ReserveTag(0x238208c1 /* tag_9669b */));

            ResourceContent = new Lazy <Tuple <ResourceReadStatus, byte[]> >(() =>
            {
                ResourceReadStatus status = ResourceReadStatus.NotFound;
                byte[] content            = null;
                try
                {
                    string resourceContent = Assembly.LoadEmbeddedResourceAsString(Name);
                    if (resourceContent != null)
                    {
                        content = Encoding.UTF8.GetBytes(resourceContent);
                        status  = ResourceReadStatus.Success;
                    }
                }
                catch (Exception ex)
                {
                    ULSLogging.ReportExceptionTag(0x238208c2 /* tag_9669c */, Categories.ConfigurationDataSet, ex,
                                                  "Unable to read resource {resourceName}", resourceName);
                    status = ResourceReadStatus.ReadFailed;
                }

                return(Tuple.Create(status, content));
            }, LazyThreadSafetyMode.PublicationOnly);
        }
示例#2
0
        /// <summary>
        /// Read the content of a resource
        /// </summary>
        /// <param name="resource">resource</param>
        /// <returns>read status and resource details</returns>
        public static Tuple <ResourceReadStatus, IResourceDetails> Read(this IResource resource)
        {
            if (!Code.ValidateArgument(resource, nameof(resource), TaggingUtilities.ReserveTag(0x238208cf /* tag_9669p */)))
            {
                return(Tuple.Create <ResourceReadStatus, IResourceDetails>(ResourceReadStatus.ReadFailed, null));
            }

            ResourceReadStatus status = resource.GetContent(out byte[] content);

            return(Tuple.Create(
                       status,
                       (IResourceDetails) new ResourceDetails(resource.LastWriteTime, content?.LongLength ?? 0, content ?? new byte[] { })));
        }