【发布时间】:2013-07-04 09:22:05
【问题描述】:
我在使用 Linq DataContext 从数据库获取数据列表时遇到问题
我正在尝试以下代码
公共类 DBContextNew : DataContext {
public static string StoreProcedureName = ""; [Function(Name = StoreProcedureName, IsComposable = false)] public ISingleResult<T> getCustomerAll() { IExecuteResult objResult = this.ExecuteMethodCall(this, (MethodInfo)(MethodInfo.GetCurrentMethod())); ISingleResult<T> objresults = (ISingleResult<T>)objResult.ReturnValue; return objresults; } }
但遇到错误
[Function(Name = StoreProcedureName, IsComposable = false)]
as 属性参数必须是常量表达式,typeof 属性参数类型的表达式或数组创建表达式
我想在运行时将值传递给 Name 属性。
有可能吗?
请帮忙。
【问题讨论】:
-
不可能,运行时不能传递Attributes参数
-
经过深思熟虑是可能的。但是你必须知道运行时的反射会导致性能问题,所以你必须尽一切努力在没有它的情况下生存。当您在项目启动或一些单例初始化时做某事时,反射是很好的。
-
忘记将动态数据传递给属性,告诉我们您将尝试实现什么,我们会尽力帮助您修复没有属性的问题。
-
@Maris:我正在尝试创建一个从存储过程返回表数据的通用函数。并且该数据将被转换为给定的模板类型列表,即 T. 因为我想使用变量传递不同的存储过程名称。
标签: c# asp.net sql linq-to-sql