Button button = control as Button;
if (button != null)
...
else
...
match (control) {
| button is Button => ...
| listv is ListView => ...
| _ => ... // null case
}
на C# тут происходит эта .NET магия, которая выбирает из web.config нужные настройки из секции SmallBusinessDataProviders классом SmallBusinessDataProvidersSection
_providersSection = (ConfigurationManager.GetSection("SmallBusinessDataProviders")) as SmallBusinessDataProvidersSection;
На немерле говорит found pattern expression () inside a raw expression
Динамик тайпкаст ( :> ) не спас на этот раз. Что делать
разве что _providersSection = match(ConfigurationManager.GetSection("SmallBusinessDataProviders"))
| sqlProvider => ???
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Здравствуйте, Shame, Вы писали:
S>на C# тут происходит эта .NET магия, которая выбирает из web.config нужные настройки из секции SmallBusinessDataProviders классом SmallBusinessDataProvidersSection S>
S>_providersSection = (ConfigurationManager.GetSection("SmallBusinessDataProviders")) as SmallBusinessDataProvidersSection;
S>
S>На немерле говорит found pattern expression () inside a raw expression S>Динамик тайпкаст ( :> ) не спас на этот раз. Что делать
S>разве что _providersSection = match(ConfigurationManager.GetSection("SmallBusinessDataProviders")) S> | sqlProvider => ???
приведи конкретный код на N который те ошибку выдает.
По идее аналог шарповскому будет такой:
Здравствуйте, Shame, Вы писали:
S>на C# тут происходит эта .NET магия, которая выбирает из web.config нужные настройки из секции SmallBusinessDataProviders классом SmallBusinessDataProvidersSection S>
S>_providersSection = (ConfigurationManager.GetSection("SmallBusinessDataProviders")) as SmallBusinessDataProvidersSection;
S>
S>На немерле говорит found pattern expression () inside a raw expression S>Динамик тайпкаст ( :> ) не спас на этот раз. Что делать
S>разве что _providersSection = match(ConfigurationManager.GetSection("SmallBusinessDataProviders")) S> | sqlProvider => ???
Семантический аналог оператора as из C# таков:
_providersSection = match(ConfigurationManager.GetSection("SmallBusinessDataProviders")) {
| x is SmallBusinessDataProvidersSection => x
| _ => null
}
В Nemerle ключевое слово as используется для паттерн-матчинга:
match(some_variant) {
| SomeVariant.A as a => WriteLine(a.i);
| SomeVariant.B as b => WriteLine(b.x);
}
public class FlowWebProvidersSection : ConfigurationSection
{
[ConfigurationProperty("peopleProviderName", IsRequired = true)]
public PeopleProviderName : string
{
get { this["peopleProviderName"] :> string }
set { this["peopleProviderName"] = value; }
}
[ConfigurationProperty("IzmListProviderName", IsRequired = true)]
public IzmListProviderName : string
{
get { (this["IzmListProviderName"] :> string) }
set { this["IzmListProviderName"] = value; }
}
[ConfigurationProperty("PeopleProviders")]
[ConfigurationValidatorAttribute(typeof(ProviderSettingsValidation))]
public PeopleProviders : ProviderSettingsCollection
{
get { this["PeopleProviders"] :> ProviderSettingsCollection }
}
[ConfigurationProperty("IzmListProviders")]
[ConfigurationValidatorAttribute(typeof(ProviderSettingsValidation))]
public IzmListProviders : ProviderSettingsCollection
{
get { this["IzmListProviders"] :> ProviderSettingsCollection }
}
}
public class ProviderSettingsValidation : ConfigurationValidatorBase
{
public override CanValidate(typex : Type) : bool
{
if(typex : object == typeof(ProviderSettingsCollection)) true else false
}
/// <summary>
// validate the provider section
/// </summary>public override Validate(value : object) : void
{
mutable providerCollection : ProviderSettingsCollection = match(value)
{
| x is ProviderSettingsCollection => x
| _ => null
}
unless (providerCollection == null)
{
foreach (_provider is ProviderSettings in providerCollection)
{
when (String.IsNullOrEmpty(_provider.Type))
{
throw ConfigurationErrorsException("Type was not defined in the provider");
}
mutable dataAccessType : Type = Type.GetType(_provider.Type);
when (dataAccessType == null)
{
throw (InvalidOperationException("Provider's Type could not be found"));
}
}
}
}
}
может тут видно ошибку ?
Сообщение об ошибке синтаксического анализатора: Ошибка при создании обработчика раздела конфигурации для FlowWebDataProviders: Не удалось загрузить тип 'FlowWebProvidersSection'.
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Здравствуйте, Shame, Вы писали:
S>Сообщение об ошибке синтаксического анализатора: Ошибка при создании обработчика раздела конфигурации для FlowWebDataProviders: Не удалось загрузить тип 'FlowWebProvidersSection'.
В конфиге нужно указать тип секции вместе с пространствами имен, в которые он вложен, а так же сборку, где он обитает, если он находится не в App_Code:
Код валидатора похоже просто скопирован с C#. На Nemerle так писать уж точно не стоит.
public class ProviderSettingsValidation : ConfigurationValidatorBase
{
public override CanValidate(typex : Type) : bool
{
typeof(ProviderSettingsCollection).Equals(typex)
}
/// <summary>
// validate the provider section
/// </summary>public override Validate(value : object) : void
{
| providerCollection is ProviderSettingsCollection =>
foreach (_provider is ProviderSettings in providerCollection)
{
when (String.IsNullOrEmpty(_provider.Type))
throw ConfigurationErrorsException("Type was not defined in the provider");
def dataAccessType = Type.GetType(_provider.Type);
when (null == dataAccessType)
throw ConfigurationErrorsException("Provider's Type could not be found");
}
| _ => ();
}
}
Здравствуйте, hardcase, Вы писали:
H>а так же сборку
Сборку ?... как раз из-за отутствия таковой не добавлсяется папка App_Code (В WebSite она как-то есть по умолчанию), а с Web App не приходилось работать, таки не могу понять про сборку — надо добавять
<%@ Assembly Name="assemblyname" %>
NameSpace добавять были попытки — Не помогает. Но ошибка не меняется.
H>На Nemerle так писать уж точно не стоит.
спасибо за Equals но мне кажется валидатор тут не причём
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Здравствуйте, Shame, Вы писали:
S>Здравствуйте, hardcase, Вы писали:
H>>а так же сборку
S>Сборку ?... как раз из-за отутствия таковой не добавлсяется папка App_Code (В WebSite она как-то есть по умолчанию), а с Web App не приходилось работать, таки не могу понять про сборку — надо добавять S><%@ Assembly Name="assemblyname" %> S>NameSpace добавять были попытки — Не помогает. Но ошибка не меняется.
Если тип проекта WebApp (не WebSite) то прописывать полное имя типа и имя сборки в конфиге ты обязан.
Здравствуйте, hardcase, Вы писали:
H>Если тип проекта WebApp (не WebSite) то прописывать полное имя типа и имя сборки в конфиге ты обязан.
А как назначить сборку ... assembly .. для моего WebApp ?
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Здравствуйте, Shame, Вы писали:
S>Здравствуйте, hardcase, Вы писали:
H>>Если тип проекта WebApp (не WebSite) то прописывать полное имя типа и имя сборки в конфиге ты обязан.
S>А как назначить сборку ... assembly .. для моего WebApp ?
WebApp уже представляет собой самостоятельную сборку.
Если приложение называется MyProject, и в нем объявлен класс MyProject.MyConfigSection, то регистрировать эту секцию в web.config нужно следующим образом:
Ага ... но я люблю пробелы и могу показать 2 вида ошибки
1)
namespace Flow_WEB_Nemerle.Config
{
public class FlowWebProvidersSection : ConfigurationSection
<section name="FlowWebDataProviders" type="Flow_WEB_Nemerle.Config.FlowWebProvidersSection, Flow WEB Nemerle" requirePermission="false" allowDefinition="MachineToApplication"/>
Ошибка при создании обработчика раздела конфигурации для FlowWebDataProviders: Невозможно загрузить файл или сборку "Flow WEB Nemerle" или один из зависимых от них компонентов. Не удается найти указанный файл.
def dataAccessType = Type.GetType(_provider.Type);
when (null == dataAccessType)
throw ConfigurationErrorsException("Provider's Type could not be found");
Вот ещё при использовании первого варианта и переносе класса ConfigurationSection в корень из папки PinkElephant появилась дополнительная информация в браузере :
Ошибка сервера в приложении '/'.
Ошибка конфигурации
Описание: Ошибка при обработке файла конфигурации, требуемого для обслуживания этого запроса. Изучите указанные ниже подробные сведения об этой ошибке и измените файл конфигурации.
Сообщение об ошибке синтаксического анализатора: Ошибка при создании обработчика раздела конфигурации для FlowWebDataProviders: Невозможно загрузить файл или сборку "Flow WEB Nemerle" или один из зависимых от них компонентов. Не удается найти указанный файл.
Исходный файл: ...\Projects\Flow WEB Nemerle\Flow WEB Nemerle\web.config Строка: 4
Трассировка загрузки сборки: Следующая информация может быть полезна при выяснении причин сбоя при загрузке сборки 'Flow WEB Nemerle'.
=== Информация о состоянии предварительной привязки ===
Журнал: User = ...
Журнал: DisplayName = Flow WEB Nemerle
(Partial)
Журнал: Appbase = .../Projects/Flow WEB Nemerle/Flow WEB Nemerle/
Журнал: Initial PrivatePath = ...\Projects\Flow WEB Nemerle\Flow WEB Nemerle\bin
Вызов сборки: (Unknown).
===
Журнал: данная привязка начинается в контексте загрузки default.
Журнал: используется файл конфигурации приложения: ...\Projects\Flow WEB Nemerle\Flow WEB Nemerle\web.config.
Журнал: используется файл конфигурации компьютера из C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
Журнал: политика в данный момент не применяется к ссылке (личная, пользовательская, частичная привязка сборки или привязка по местоположению).
Журнал: попытка загрузки нового URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/7c053c00/90d7449c/Flow WEB Nemerle.DLL.
Журнал: попытка загрузки нового URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/7c053c00/90d7449c/Flow WEB Nemerle/Flow WEB Nemerle.DLL.
Журнал: попытка загрузки нового URL .../Projects/Flow WEB Nemerle/Flow WEB Nemerle/bin/Flow WEB Nemerle.DLL.
Журнал: попытка загрузки нового URL .../Projects/Flow WEB Nemerle/Flow WEB Nemerle/bin/Flow WEB Nemerle/Flow WEB Nemerle.DLL.
Журнал: попытка загрузки нового URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/7c053c00/90d7449c/Flow WEB Nemerle.EXE.
Журнал: попытка загрузки нового URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/7c053c00/90d7449c/Flow WEB Nemerle/Flow WEB Nemerle.EXE.
Журнал: попытка загрузки нового URL .../Projects/Flow WEB Nemerle/Flow WEB Nemerle/bin/Flow WEB Nemerle.EXE.
Журнал: попытка загрузки нового URL .../Projects/Flow WEB Nemerle/Flow WEB Nemerle/bin/Flow WEB Nemerle/Flow WEB Nemerle.EXE.
Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.4927; ASP.NET, версия:2.0.50727.4927
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
S> def dataAccessType = Type.GetType(_provider.Type);
S> when (null == dataAccessType)
S> throw ConfigurationErrorsException("Provider's Type could not be found");
S>
Я полагаю что _provider.Type содержит имя "SqlPeopleProvider", взятое отсюда:
Здравствуйте, hardcase, Вы писали:
H>Укажи квалифицированное имя класса, по аналогии с именем класса конфигурации.
АААА ! Спасибо ! Заработало .
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين