using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MediaLibrary;
using System.Reflection;
    public partial class _Default : System.Web.UI.Page
    {        protected void Page_Load(object sender, EventArgs e)
        {
            InitMediaType();
        }
        private void InitMediaType()
        {
            DropDownList1.Items.Clear();
            foreach (string key in ConfigurationSettings.AppSettings.AllKeys)
            {
                DropDownList1.Items.Add(key);
            }
            DropDownList1.SelectedIndex = 0;
        }
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string mediaType = DropDownList1.SelectedItem.ToString().ToLower();
            string factoryDllName = ConfigurationSettings.AppSettings[mediaType].ToString();//factoryDllName 可以取到值"MediaLibrary.MP3Factory"
            IMediaFactory factory = (IMediaFactory)Activator.CreateInstance("MediaLibrary", factoryDllName).Unwrap();//此句提示无法载入文档或组件,找不到MediaLibrary或其相依性的其中之一,系统找不到指定的文档,factory 为null,无法实例化
            if (factory != null)
            {
                IMedia media = factory.CreateMedia();
                media.Play();
            }        }
    }
//配置档如下:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="mp3" value="MediaLibrary.MP3Factory"/>
<add key="wav" value="MediaLibrary.WAVFactory"/>
</appSettings>
<connectionStrings/>
</configuration>
以下再给出类,接口听代码,如下所示:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary
{
    /// <summary>
    /// Summary description for IMedia
    /// </summary>
    public interface IMedia
    {
        void Play();
    }
}using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for AudioMedia
    /// </summary>
    public abstract class AudioMedia : IMedia//AudioMedia只是一个抽象化概念,并没有实际的使用情况
    {
        public abstract void Play();
    }
}using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for VideoMedia
    /// </summary>
    public abstract class VideoMedia : IMedia
    {
        public abstract void Play();
    }}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for IMediaFactory
    /// </summary>
    public interface IMediaFactory
    {
        IMedia CreateMedia();
    }}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for WAVFactory
    /// </summary>
    public class WAVFactory : IMediaFactory
    {
        public IMedia CreateMedia()
        {
            return new WAV();
        }
    }}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for MP3Factory
    /// </summary>
    public class MP3Factory : IMediaFactory
    {
        public IMedia CreateMedia()
        {
            return new MP3();
        }
    }}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for IMediaFactory
    /// </summary>
    public interface IMediaFactory
    {
        IMedia CreateMedia();
    }}using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for MP3
    /// </summary>
    public class MP3 : AudioMedia
    {
        public override void Play() //重写Play()
        {        }
    }}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MediaLibrary {
    /// <summary>
    /// Summary description for WAV
    /// </summary>
    public class WAV : AudioMedia //重写Play()
    {
        public override void Play()
        {        }
    }}朋友帮解决一下吧,本来刚接触反射这方面不太懂,用不起来!解决了一定要好好感谢一下.