将泛型类与 ObjectDataSource 一起使用

2023-11-21

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

在内部,ObjectDataSource 正在调用 Type.GetType(string) 来获取 类型,因此我们需要遵循 Type.GetType 中记录的有关如何操作的指南 使用泛型获取类型。你可以参考MSDN Library上关于Type.GetType的内容:

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

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

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

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

TypeName="TestObjectDataSourceAssembly.MyDataHandler`1[System.String],TestObjectDataSourceAssembly"

好吧,有道理。然而,当我尝试时,页面抛出异常:

<asp:ObjectDataSource ID="MyDataSource" TypeName="MyProject.Repository`1[MyProject.MessageCategory],DataAccess" />

[InvalidOperationException:找不到 ObjectDataSource“MyDataSource”的 TypeName 属性中指定的类型。]

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


做这样的事情。

Type type = typeof(Repository<MessageCategory);
string assemblyQualifiedName = type.AssemblyQualifiedName;

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

要获取的类型的程序集限定名称。看装配合格名称。如果该类型位于当前执行的程序集或 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将泛型类与 ObjectDataSource 一起使用 的相关文章

随机推荐

  • Python/SciPy:如何从 CubicSpline 获取三次样条方程

    我正在通过给定的一组数据点生成三次样条曲线图 import matplotlib pyplot as plt import numpy as np from scipy import interpolate x np array 1 2 4
  • 如何从 Tomcat Java 应用程序捕获 SOAP 消息到外部服务器?

    我有一个 Web 应用程序 它在 Tomcat6 内运行并通过 HTTPS 将 SOAP 消息发送到某个外部系统 我想拦截这些消息 为了做到这一点 我在工具 gt Fiddler 选项对话框 重新启动 Fiddler 后 我可以看到对多个主
  • 如何读取内存中存储的图像文件?

    在我的 Android 应用程序中 我使用以下代码将图像文件存储在内部存储器中 FileOutputStream fos con openFileOutput fileName con MODE PRIVATE fos write baf
  • 在不同的控制器中设计表单

    我正在使用 devise gem 进行登录 退出程序 我从设备生成视图文件 使用rails g devise views 我看到有一个 devise sessions new html erb 文件 其中包含登录表单 我创建了另一个文件 d
  • TypeScript - 检查对象的属性是否是具有给定签名的函数

    我有一个从对象获取属性的函数 Utils ts export function getProperty
  • 如何在 Java 中将电话号码格式化为字符串?

    我一直将电话号码存储为很长的长度 我想在将电话号码打印为字符串时简单地添加连字符 我尝试使用DecimalFormat但这不喜欢连字符 可能是因为它用于格式化十进制数字而不是长整数 long phoneFmt 123456789L Deci
  • Android studio java.exe 以非零退出值 3 结束

    我已经通过了与 multidex 问题相关的非零退出值 1 2 但现在我得到了非零退出值 3 工作室留言 Information Gradle Executing tasks emoticons lib proj assembleDebug
  • 通过AJAX调用提示用户保存文件

    我正在将 DHTMLX 网格导出到 csv 并已成功创建 CSV 文件 我遇到的问题是它没有提示用户保存 打开文件 我使用 javascript 中的 post 调用将 CSV 字符串发送到 PHP 然后将该字符串写入 csv 由于某种原因
  • 如何在 C# 中使用 imageMagick

    您能解释一下如何将 ImageMagick 与 C 一起使用吗 我正在尝试将 PDF 页面转换为图像 我想运行 imageMagick 命令 convert 密度 300 input pdf output png string argume
  • 获取类函数的参数数量

    有没有办法检测类中函数的参数数量 我想做的是以下内容 class foo path path to file if file exists path die require path if class exists class die c
  • 在 Maps V2 上绘制多色折线

    我按照以下方式在地图上绘制纯色折线 效果很好 PolylineOptions polyLine new PolylineOptions polyLine width 5 polyLine color Color RED polyLine g
  • WPF 的语法荧光笔[重复]

    这个问题在这里已经有答案了 我目前正在为 WPF 应用程序寻找语法荧光笔 用户可以在文本框中输入内容 希望能够识别代码并相应地突出显示语法 我想先支持C 稍后再支持其他语言 问题重复394751 如果您不介意没有任何文档 Avalon编辑是
  • 使用@EJB时,每个托管bean是否都有自己的@EJB实例?

    我正在将 JSF 2 2 用于 Web 项目 并且现在正在实现登录页面 我有一个login xhtml作为view 和一个名为的支持 beanUserLoginView 这种豆子有一个EJB属性beanprivate UserService
  • 组合类型别名的协议和空一致协议之间的区别

    Swift 中这两者有区别吗 protocol ABProtocol AProtocol BProtocol typealias ABProtocol AProtocol BProtocol 为了让事情更清楚 我将第二个重命名为 typea
  • 从变量中批量提取路径和文件名

    如何从变量中提取路径和文件名 Setlocal EnableDelayedExpansion set file C Users l72rugschiri Desktop fs cfg 我想在不使用任何函数或任何 GOTO 的情况下做到这一点
  • ruby 的 <=> 运算符和排序方法

    player1 Player new moe player2 Player new larry 60 player3 Player new curly 125 players player1 player2 player3 上面 我创建了一
  • 路由器命名的插座被激活一次

    是否有可能让路由器命名的插座被激活一次 然后永远不会被破坏 无论主插座中导航什么路线 目的是让组件保留在页面上 例如 sidebar 但在初始加载时获得路由的好处 例如防护 解析器 和延迟加载 要求是命名的插座不应以任何负面方式影响用户体验
  • 正则表达式使用字符限制验证密码

    我需要使用以下规则验证密码 6 至 20 个字符 必须包含至少一位数字 必须包含至少一个字母 不区分大小写 可以包含以下字符 以下表达式匹配除最后一个要求之外的所有要求 最后一张我能做什么 d A z 6 20 我不完全确定我有这个权利 但
  • STL容器函数返回值

    当查看 STL 容器的成员函数时 我想到了一个奇怪的想法 为什么没有像这样的功能std vector
  • 将泛型类与 ObjectDataSource 一起使用

    我有一个通用的 Repository 类 我想与 ObjectDataSource 一起使用 Repository 位于一个名为 DataAccess 的单独项目中 根据这篇文章来自 MS 新闻组 相关部分复制如下 在内部 ObjectDa