当前位置:  开发笔记 > 编程语言 > 正文

使用ObjectDataSource的泛型类

如何解决《使用ObjectDataSource的泛型类》经验,为你挑选了1个好方法。

我有一个通用的Repository 类,我想与ObjectDataSource一起使用.存储库位于名为DataAccess的单独项目中.根据MS新闻组的这篇文章(相关部分复制如下):

在内部,ObjectDataSource正在调用Type.GetType(string)来获取类型,因此我们需要遵循Type.GetType中记录的指南,了解如何使用泛型获取类型.您可以在Type.GetType上引用MSDN Library:

http://msdn2.microsoft.com/en-us/library/w3f99sx1.aspx

从文档中,您将了解到需要使用反引号(`)来表示使用泛型的类型名称.

此外,这里我们必须在类型名称字符串中指定程序集名称.

因此,对于您的问题,答案是使用类型名称,如下所示:

类型名= "TestObjectDataSourceAssembly.MyDataHandler`1 [System.String],TestObjectDataSourceAssembly"

好的,有道理.但是,当我尝试它时,该页面会抛出异常:


[InvalidOperationException:找不到ObjectDataSource'MyDataSource'的TypeName属性中指定的类型.

奇怪的是,这只发生在我查看页面时.当我从VS2008设计器打开"配置数据源"对话框时,它正确地向我显示了我的通用Repository类的方法.调试时将TypeName字符串传递给Type.GetType()也会返回有效类型.什么给出了什么?



1> Darren Kopp..:

做这样的事情.

Type type = typeof(Repository

获取assemblyQualifiedName的值并将其粘贴到TypeName字段中.注意Type.GetType(string),传入的值必须是

要获取的类型的程序集限定名称.请参阅AssemblyQualifiedName.如果类型在当前正在执行的程序集中或在Mscorlib.dll中,则提供由其名称空间限定的类型名称就足够了.

因此,它可以通过在代码中传入该字符串来工作,因为该类位于当前正在执行的程序集中(您在其中调用它),而ObjectDataSource则不是.

很可能你正在寻找的类型是

MyProject.Repository`1[MyProject.MessageCategory, DataAccess, Version=1.0.0.0, Culture=neutral, PublicKey=null], DataAccess, Version=1.0.0.0, Culture=neutral, PublicKey=null

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有