Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CurrentMethod Parameters Value 
:(
    Опции темы
Jlekc
Дата 2.3.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 1
Всего: 4



С помощью рефлексии могу узнать текущий метод, получить список параметров.
Но как добраться до значение параметров??

Пробывал искать в направлении StackFrame, там тоже много интересного но чтот значения я не нахожу((
Ктот знает??

ЗЫ: чтоб не спрашивали зачем, сразу отвечу - хочу делать полный Log процеса выполнения программы.


--------------------
PM MAIL ICQ   Вверх
Idsa
Дата 2.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Предложу тебе свою реализацию... хотя она глупая и неуклюжая. Но, думаю, лучше уж что-то, чем ничего. Итак:
Код

using System;
using System.Diagnostics;

class A
{
  int x = 0, y = 0;
  public A(int x, int y)
  {
    StackFrame sf = new StackFrame(false);
    Console.WriteLine(sf.GetMethod());
    Console.WriteLine("Параметры: \n" + "1. " + x + "\n2. " + y + "\n");
  }
  public void Method(string str, int[] arr)
  {
    StackFrame sf = new StackFrame(false);
    Console.WriteLine(sf.GetMethod());
    Console.WriteLine("Параметры: ");
    Console.WriteLine("1. " + str);
    Console.Write("2. {");
    for (int i = 0; i < arr.Length - 1; i++)
      Console.Write(arr[i] + ", ");
    Console.WriteLine(arr[arr.Length - 1] + "}\n");
  }
}

class Program
{
  public static void Main()
  {
    A a = new A(5, 10);
    a.Method("lalala", new int[5] { 1, 2, 3, 4, 5 });
    Console.ReadLine();
  }
}

Ты правильно смотрел в сторону StackFrame. Его я и использую в качестве основы: получаю метод на вершине стека вызовов. Дале вручную обрабатываю все параметры. Недостаток моего метода в том, что процесс обработки параметров неавтоматизирован. Как это дело можно автоматизировать, я не представляю.
Reflection, насколько я знаю, не позволяет реализовать работу с текущими входными параметрами. Это и понятно: Reflection работает с метаданными, а в метаданных такой информации по понятным причиным быть не может.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Jlekc
Дата 4.3.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 1
Всего: 4



Цитата(Idsa @  2.3.2007,  19:36 Найти цитируемый пост)
...
StackFrame sf = new StackFrame(false);
Console.WriteLine(sf.GetMethod());
...

можно записать MethodBase.GetCurrentMethod() для приведенного примера это равносильно, и нет необходимости исполльзовать StackFrame.

Ну а ваще, речь какраз и идет об автоматизированой сборке параметров, описывать все ручками - последнее дело.



--------------------
PM MAIL ICQ   Вверх
Jlekc
Дата 6.3.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 1
Всего: 4



Ау, никто не хочет помочь??


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.