Я изменил образец dimarzionist. Эта версия будет только работать с Перечислениями и не позволять структурам пройти.
public static T ParseEnum<T>(string enumString)
where T : struct // enum
{
if (String.IsNullOrEmpty(enumString) || !typeof(T).IsEnum)
throw new Exception("Type given must be an Enum");
try
{
return (T)Enum.Parse(typeof(T), enumString, true);
}
catch (Exception ex)
{
return default(T);
}
}
CFPROPERTY используется только для предоставления метаданных для компонента. Единственный раз, когда я использую их, это при создании компонента для веб-службы, когда они требуются.
Вот техническая заметка, в которой CFPROPERTY обсуждается немного подробнее: http://kb2.adobe.com/cps /191/tn_19169.html
Область переменных «защищена» и доступна только внутри компонента. Переменные области видимости "this" являются общедоступными свойствами. И, конечно же, любая переменная, объявленная с ключевым словом "var", является частной для этого метода.
Вот еще некоторые сведения о компонентах: http://www.hemtalreja.com/?p=94
Примечание: тег cfproperty не определяет переменные НЕ .
Однако, это полезно, когда вы используете CFC Explorer (переходите к CFC напрямую), чтобы вы могли видеть свойства объекта CFC.
FYI ... cfproperty будет гораздо более полезным в CF9. См .: ORM - Переосмысление интеграции с базой данных ColdFusion
cfproperty полезно при использовании пользовательских объектов в удаленных методах. Например, предположим, что у меня есть следующий компонент:
<cfcomponent displayname="User">
<cfset variables.firstName = "first" />
</cfcomponent>
, который я хотел использовать в качестве возврата к удаленному методу, потребляемому через SOAP. Мне потребуются теги
для каждой переменной, которую я хочу инкапсулировать в возвращаемый объект, чтобы этот объект был включен в документ WSDL как сложный тип. Следовательно, компонент сверху должен быть:
<cfcomponent displayname="User">
<cfproperty name="firstName" type="string" />
<cfset variables.firstName = "first" />
</cfcomponent>