if (numbers.Length != 2)
  {
    throw new ArgumentException("Включить только два числа.");
  )
  else
  {
    int lowerLimit, upperLimit;
    if (Int32.TryParse(numbers[0], out lowerLimit) &&
        Int32.TryParse(numbers[1], out upperLimit))
    {

До сих пор все операции выполнялись в нормальном коде. Это потому, что два числа специфицированы в выражении, поэтому они не будут изменяться при каждом залросе страницы. Однако случайное число должно изменяться каждый раз, поэтому теперь вам нужно переключиться к CodeDOM, чтобы создать динамический сегмент кода. Базовая стратегия состоит в конструировании CodeExpression, который вызовет статический метод GetRandomNumber().

Вот остаток кода:

        // Специфицировать класс.
        Type type = entry.DeclaringType;
        PropertyDescriptor descriptor =
          TypeDescriptor.GetProperties(type)[entry.PropertyInfo.Name];
        // Определить параметры.
        CodeExpression[] expressionArray = new CodeExpression[2];
        expressionArray[0] = new CodePrimitiveExpression(lowerLimit);
        expressionArray[1] = new CodePrimitiveExpression(upperLimit);
        // Определить выражение, которое вызывает метод.
        return new CodeCastExpression(descriptor.PropertyType,
           new CodeMethodInvokeExpression (
             new CodeTypeReferenceExpression(base.GetType()),
             "GetRandomNumber", expressionArray));
      }
      else
      {
        throw new ArgumentException ("Используйте правильные целые числа.");
      }
    }
  }
}

Теперь вы можете скопировать этот построитель выражений в папку App_Code (или компилировать его отдельно и поместить DLL сборки в папку Bin). И, наконец, чтобы использовать этот построитель выражений в Web-приложении, вам понадобится зарегистрировать его в файле web.config и отобразить его на префикс, который хотите использовать:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation debug="true">

предыдущая    следующая страница   оглавление

378

Hosted by uCoz