使用工厂创建对象,程序如下:
namespace Wyb.Software.DALFactory
{
public class GameType
{
public static Wyb.Software.IDAL.IGameType Create()
{
string path = System.Configuration.ConfigurationSettings.AppSettings["WebDAL"];
string className = path + ".GameType"; return (Wyb.Software.IDAL.IGameType) Assembly.Load(path).CreateInstance(className);
}
}
}
web.config配置:
<appSettings>
<add key="WebDAL" value="Wyb.Software.SQLServerDAL" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="Wyb.Software.SQLServerDAL" fullName="Wyb.Software.SQLServerDAL,version=1.0.0.0,publicKeyToken=24fc0db1dfe597a6,culture=neutral" />
    </assemblyBinding>
</runtime>运行到:return (Wyb.Software.IDAL.IGameType) Assembly.Load(path).CreateInstance(className);时出错,提示:
从索引 0 处开始,初始化字符串的格式不符合规范。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 从索引 0 处开始,初始化字符串的格式不符合规范。这时path的值为:Wyb.Software.SQLServerDAL
className的值为:Wyb.Software.SQLServerDAL.GameType

解决方案 »

  1.   

    程序集名称:Wyb.Software.SQLServerDAL
    已修改:2005-1-15 18:12:54
    区域性:neutral
    版本:1.0.0.0
    公钥标记:24fc0db1dfe597a6
    基本代码:file:///D:/wyb/Software/SQLServerDAL/bin/Release/Wyb.Software.SQLServerDAL.dll
    缓存类型: Gac
      

  2.   

    return (Wyb.Software.IDAL.IGameType) Assembly.Load(path).CreateInstance(className);
                                                         *
    这个参数不对。public static Assembly Load(
       AssemblyName assemblyRef
    );
    assemblyRef 描述要加载的程序集的 AssemblyName 对象。
      

  3.   

    AssemblyName myAssemblyName = new AssemblyName(); 
          myAssemblyName.Name = "MyAssembly";
          myAssemblyName.Version = new Version("1.0.0.2001");
          MakeAssembly(myAssemblyName, "MyAssembly.exe");
      

  4.   

    fangxinggood(JustACoder)你好:
    能不能结合我的实际情况给出一点修改意见?谢谢
      

  5.   

    myAssemblyName.Name = "MyAssembly";  无非就是修改Name(相当于你的Path)。你试试。