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()
{ }
}}朋友帮解决一下吧,本来刚接触反射这方面不太懂,用不起来!解决了一定要好好感谢一下.
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()
{ }
}}朋友帮解决一下吧,本来刚接触反射这方面不太懂,用不起来!解决了一定要好好感谢一下.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货