Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq、反射、lambda表达式系统地将SqlParameters添加到SqlParameterCollection中 公共类SomeClass { 公共SqlParameterCollection SPPC; 公共SomeClass(someType somePrameter) { ……这里有一些参数。。。。。。。 ... ... ....... ....... foreach(类型中的var项)( GetTimesWithCustomerNames ).GetMembers() ) { 附件(项目); } } SqlParameter Userid=新的SqlParameter(); SqlParameter月=新的SqlParameter(); SqlParameter Year=新的SqlParameter(); SqlParameter ReasonId=新的SqlParameter(); }_C#_Reflection_Coding Style_Constructor_Class Members - Fatal编程技术网

C# 使用Linq、反射、lambda表达式系统地将SqlParameters添加到SqlParameterCollection中 公共类SomeClass { 公共SqlParameterCollection SPPC; 公共SomeClass(someType somePrameter) { ……这里有一些参数。。。。。。。 ... ... ....... ....... foreach(类型中的var项)( GetTimesWithCustomerNames ).GetMembers() ) { 附件(项目); } } SqlParameter Userid=新的SqlParameter(); SqlParameter月=新的SqlParameter(); SqlParameter Year=新的SqlParameter(); SqlParameter ReasonId=新的SqlParameter(); }

C# 使用Linq、反射、lambda表达式系统地将SqlParameters添加到SqlParameterCollection中 公共类SomeClass { 公共SqlParameterCollection SPPC; 公共SomeClass(someType somePrameter) { ……这里有一些参数。。。。。。。 ... ... ....... ....... foreach(类型中的var项)( GetTimesWithCustomerNames ).GetMembers() ) { 附件(项目); } } SqlParameter Userid=新的SqlParameter(); SqlParameter月=新的SqlParameter(); SqlParameter Year=新的SqlParameter(); SqlParameter ReasonId=新的SqlParameter(); },c#,reflection,coding-style,constructor,class-members,C#,Reflection,Coding Style,Constructor,Class Members,对于初学者来说,我之所以在这里,是因为我现在需要访问在这个类的主体中声明的sqlParameters 在构造函数分配后,这些对象将立即添加到集合中 但是当我(希望在你的帮助下…)开始解决这个问题时 我想学习一种我将坚持并可能使用的技术,不仅在当前类中使用此代码,因为我将能够重用该方法,它还应该适用于大多数集合。 这意味着我可以系统地添加-成员/变量或不同类型的数据,而不是隐式/手动地放置每一个,就像我也可以使用其他类成员/字段或属性(与本例不在同一范围内)一样,这使得它更加实用 我的问题是 您将

对于初学者来说,我之所以在这里,是因为我现在需要访问在这个类的主体中声明的
sqlParameters

在构造函数分配后,这些对象将立即添加到集合中

但是当我(希望在你的帮助下…)开始解决这个问题时

我想学习一种我将坚持并可能使用的技术,不仅在当前类中使用此代码,因为我将能够重用该方法,它还应该适用于大多数
集合。
这意味着我可以系统地添加-成员/变量或不同类型的数据,而不是隐式/手动地放置每一个,就像我也可以使用其他类成员/字段或属性(与本例不在同一范围内)一样,这使得它更加实用

我的问题是

您将如何实现这一点,使用foreach有点过时,因为我们可以在Linq上使用lambda表达式

是否有其他成本较低的方法来接触不使用反射的给定类的
子类


我将非常感谢一个实施的例子

我个人会这样做

public class SomeClass
{
    public List<SqlParameter> SPPC;

    public SomeClass(someType someParameter)
    {
        SPPC = this.GetType().GetMembers().ToList();

        // Or you could restrict it to only fields or properties using Where()
        SPPC = this.GetType().GetMembers().Where(member => member which is of type such).ToList();

        // Or use Select() to get only the value or the name of the members
        SPPC = this.GetType().GetMembers().Select(member => get member value).ToList();

    }
}
公共类SomeClass
{
公开名单;
公共SomeClass(someType someParameter)
{
SPPC=this.GetType().GetMembers().ToList();
//或者可以使用Where()将其限制为仅包含字段或属性
SPPC=this.GetType().GetMembers().Where(member=>member,其类型为此类)。ToList();
//或者使用Select()仅获取成员的值或名称
SPPC=this.GetType().GetMembers().Select(member=>get member value.ToList();
}
}
你只需要围绕着你需要从这些成员那里得到的东西来思考,因为使用反射有时会变得非常混乱

无反射

现在,如果您不想使用反射,则需要在初始化它们时手动添加每个反射

public class SomeClass
{
    public List<SqlParameter> SPPC;

    public SomeClass(someType someParameter)
    {
        SPPC.Add(new SqlParameter());
        SPPC.Add(new SqlParameter());
        SPPC.Add(new SqlParameter());
        ...
    }
}
公共类SomeClass
{
公开名单;
公共SomeClass(someType someParameter)
{
添加(新的SqlParameter());
添加(新的SqlParameter());
添加(新的SqlParameter());
...
}
}

那么,您想访问给定类的属性/字段吗?并将它们放入列表/数组中?换句话说,
SomeClass
?@rae1n yes rae1n中的属性/字段准确地说,虽然这实际上是当前场景的答案,也是正确的答案,但我真的很想学习一些可以服务于各种场景的方法顺便问一下,这种设计的主要目的是什么,意思是获得
类的
子类
,以及诸如此类的…?看起来确实不错,因为您至少使用了1行代码(:请稍候,谷歌搜索
列表
SqlParameterCollection
,了解它们之间的区别,同时将其分配给SqlCommand。参数添加..否则,为什么MS应该麻烦创建另一个从更广泛的原型或patrent-
DBcollection
@LoneXcoder继承的特定类型?您可以使用
sqlparametereCollection
。我不知道他们为什么这么麻烦,但似乎一个更专业的类将更好地使用
SqlCommand
API。据谷歌发现(几乎没有)使用SqlParameterCollection的结果,我看不到任何实现。除了一个最接近使用此类型的表示/引用
sqlCommand.Parameters
-作为
SqlParameterCollection
,下一步停止MSDN。无论如何,如果我看不到任何应该是我预期的答案,我将关闭此对话框照原样。。