Ну, я думаю, что название этого вопроса далеко не ясно, но я надеюсь, что текст ниже может прояснить это.
Код ниже является только концепцией, но иллюстрирует то, что я пытаюсь сделать. Как я могу получить доступ к члену List (внутри делегата), возвращенному методом, без назначения его локальной переменной List? Это возможно?
static void ListTest()
{
int count = 0;
List<int> even = Load().FindAll(delegate(int x)
{
count = Count; //<------- How can I get the Count from the List returned by the Load method?
return (x % 2) == 0;
});
System.Console.WriteLine("Count = {0} and there are {1} even numbers", count, even.Count);
}
static List<int> Load()
{
List<int> array = new List<int>();
int[] vet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
array.AddRange(vet);
return array;
}
Вот оригинальный код - просто для иллюстрации, почему я не хотел создавать новый список, потому что это будет только временный список без какого-либо другого использования.
private List<MailItem> Find<T_Item, T_Adaptor>(T_Adaptor adaptor, MailItemId MailId)
{
List<T_Item> Items = ((List<T_Item>)(typeof(T_Adaptor).InvokeMember(
"Load",
BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod,
null, adaptor,
new Object[] { null, MailId, null }))).FindAll(
delegate(T_Item itm)
{
MailItem mi = itm as MailItem;
if (mi == null) return false;
return (mi.StateInd.Code == StateInd.ASSIGNED);
});
List<MailItem> mailItems = new List<MailItem>();
foreach (T_Item itm in Items)
mailItems.Add(itm as MailItem);
return mailItems;
}
Спасибо