Exemple #1
0
        /// <summary>
        /// 从组合体中获取指定名称的嵌入的资源
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assembly"></param>
        /// <param name="resourceName"></param>
        /// <returns></returns>
        public static T GetEmbeddedResource <T>(Assembly assembly, string resourceName) where T : class
        {
            string manifestName = GetResourceManifestName(resourceName, assembly);

            if (string.IsNullOrEmpty(manifestName))
            {
                return(default(T));
            }

            if (typeof(T) == typeof(Stream))
            {
                return(assembly.GetManifestResourceStream(manifestName) as T);
            }

            using (Stream st = assembly.GetManifestResourceStream(manifestName))
            {
                st.Position = 0;
                if (typeof(T) == typeof(string))
                {
                    using (StreamReader reader = new StreamReader(st))
                    {
                        object text = reader.ReadToEnd();
                        return((T)text);
                    }
                }
                else
                {
                    XmlObjectSerializer serializer = ObjectEx.GetXmlObjectSerializer(typeof(T));
                    return(serializer.ReadObject(st) as T);
                }
            }
        }