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