目前我有以下方法,它将两个linq表达式作为参数并使用它们进行一些处理。
public RecordConfiguration<TStage, TKey> EnsureUnique<TProperty1, TProperty2>(Expression<Func<TStage, TProperty1>> propertyAccessor1, Expression<Func<TStage, TProperty2>> propertyAccessor2)
{
var columnSet = new ColumnSet<TStage>();
columnSet.AddAt(0, propertyAccessor1);
columnSet.AddAt(1, propertyAccessor2);
Expression<Func<IEntitySetCollection, short, IValidator>> uniquenessValidatorCreator = (entitySetCollection, stagedEntitySetId) =>
new UniquenessValidator<TStage, TKey>(entitySetCollection,stagedEntitySetId, columnSet);
RecordValidatorCreators.Add(uniquenessValidatorCreator);
return this;
}
相反,只限制两个参数,我可以传递n个不同类型的参数,如上面两个吗?
答案 0 :(得分:3)
您可以使用参数运算符
public RecordConfiguration<TStage, TKey> EnsureUnique>(params Expression<Func<TStage, object>>[] propertyAccessors)
{
// ...
properyAccessors.Select((val,index)=>new{ val,index})
.ForEach(i =>columnSet.AddAt(i.index, i.val));
// ...
}