【发布时间】:2011-06-28 12:15:56
【问题描述】:
我的意图是... void 加密 'TSource' 中的任何属性值,可能是全部或部分属性取决于选择器。
这是我以前的代码:
...IEnumerable<TSource>().ForEach(delegate(TSource ts)
{
ts.prop0 = ts.prop0.Encrypt();
ts.prop1 = ts.prop1.Encrypt();
Etc...
});
IEnumerable 扩展:
...ForEach<TSource>(this IEnumerable<TSource> source, Action<TSource> action)
{
foreach (TSource item in source)
action(item);
}
字符串扩展名:
...string Encrypt(this string strPlainText)
{
if (!string.IsNullOrEmpty(strPlainText))
return SomeClass.Encrypt(strPlainText);
return strPlainText;
}
关键是如何将以上所有内容转换为 IEnumerable Extension 只是在行语法中,可能看起来像这样,也可能不像这样:
//Encrypt all props. in Tsource.
...IEnumerable<TSource>().EncryptProp();
//Encrypt any prop. in Tsource. with selector property
...IEnumerable<TSource>().EncryptProp(ts => ts.prop0);
...IEnumerable<TSource>().EncryptProp(ts => ts.prop0,ts.prop1);
...IEnumerable<TSource>().EncryptProp(ts => ts.prop0,ts.prop1,Etc...);
我很乐意接受任何建议。
【问题讨论】:
-
@ColinE,你明白我的意思,但不是全部