2015-03-23 2 views
0

В настоящее время у меня есть метод ниже, который принимает два выражения linq в качестве параметров и выполняет некоторый процесс с их использованием.Как передать n noof общих параметров для метода

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

См: http://stackoverflow.com/questions/15417174/using-the-params-keyword-for-generic-parameters-in-c -sharp – Ahmad

ответ

3

ожно взять использование Params оператора

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)); 
    // ... 
} 
Смежные вопросы