New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Простые перечисления #350

Merged
merged 8 commits into from Oct 13, 2016

Conversation

2 participants
@dmpas
Copy link
Collaborator

dmpas commented Oct 11, 2016

Создам запрос, чтобы обсуждение в нём вести. Вливать пока не надо.

@@ -8,7 +8,6 @@
namespace ScriptEngine.HostedScript.Library
{
[EnumerationType("СтатусСообщения", "MessageStatus")]
[EnumerationGlobalProperty("СтатусСообщения", "MessageStatus")]

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 11, 2016

Owner

Все-таки решил убрать?

This comment has been minimized.

@dmpas

dmpas Oct 11, 2016

Collaborator

ага, порыскал по синтаксис-помощнику и таки решил убрать :)

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 11, 2016

Owner

Вроде как было вложенное перечисление "СвойстваОбъектовМетаданных". Но в любом случае, это более редкое явление и его можно поддержать иным способом, чем принудительно в каждом enum писать лишний атрибут.

This comment has been minimized.

@dmpas

dmpas Oct 11, 2016

Collaborator

Там третьим параметром можно указать false и свойство не будет создаваться автоматом.

@@ -37,7 +37,13 @@ public static object ConvertParam(IValue value, Type type)
{
return null;
}
else if (type == typeof(IValue))

if (Nullable.GetUnderlyingType(type) != null)

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 11, 2016

Owner

@dmpas расскажи, пожалуйста, что этот код делает? Что такое Nullable?

This comment has been minimized.

@dmpas

dmpas Oct 11, 2016

Collaborator

Nullable - это когда int? или enum?

то есть, это тип не enum, и не int, и не IValue и ни под одно условие ниже не подпадает.

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 11, 2016

Owner

А в каких случаях это условие будет истинным? (Nullable.GetUnderlyingType(type) != null)? Если передали typeof(someEnum)? А почему тогда Nullable? Это не придирки к коду, это я для саморазвития.

This comment has been minimized.

@dmpas

dmpas Oct 11, 2016

Collaborator

когда я только начинал, я сделал

void SortByValue(SortDirectionEnum? direction = null)

оно понятно, что сейчас переделал на правильное

void SortByValue(SortDirectionEnum direction = SortDirectionEnum.Asc)

но тогда было так и маршаллер не срабатывал, потому что хотел преобразование в SortDirectionEnum? (Nullable<SortDirectionEnum>), а не в SortDirectionEnum. Просто-напросто не находил такой тип, потому что это другой тип.

Это в параметрах. Сейчас буду отрабатывать ещё возвращаемые значения - там тоже может встретиться что-нибудь вроде int?, чтобы вернуть число или Неопределено - там тоже надо будет Nullable отработать.

This comment has been minimized.

@dmpas

dmpas Oct 11, 2016

Collaborator

То есть, передали мы не typeof(someEnum), а typeof(someEnum?), тогда это условие будет истинным.

@@ -10,10 +10,10 @@ namespace ScriptEngine.HostedScript.Library
[EnumerationType("НаправлениеСортировки", "SortDirection")]
public enum SortDirectionEnum
{
[FieldContext("Возр", "ASC")]
[ContextField("Возр", "ASC")]

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 11, 2016

Owner

А может быть, EnumItem?

This comment has been minimized.

@dmpas

dmpas Oct 12, 2016

Collaborator

@EvilBeaver Context? :) да, слово Enum было бы разумно увидеть. С другой стороны, ежу понятно, что это Enum и здесь его Item. Не знаю.

This comment has been minimized.

@EvilBeaver

EvilBeaver Oct 12, 2016

Owner

Возможно, просто слово Field у меня не ассоциируется с элементом Enum-а

@dmpas

This comment has been minimized.

Copy link
Collaborator

dmpas commented Oct 13, 2016

Ну, я вроде всё. Если нет более замечаний, то можно это слить, отдельной допилкой перевести все остальные перечисления из стандартной библиотеки и объявить старую аннотацию устаревшей.

@EvilBeaver

This comment has been minimized.

Copy link
Owner

EvilBeaver commented Oct 13, 2016

@dmpas а сейчас работают оба варианта поиска и включения перечислений, по обеим аннотациям?

@dmpas

This comment has been minimized.

Copy link
Collaborator

dmpas commented Oct 13, 2016

@EvilBeaver да, я поменял лишь СтатусСообщения и НаправлениеСортировки. По старому варианту ещё куча всякого работает: ХешФункция, ТипУзлаXml, УровеньСжатияZIP и многое другое. К тому же, старый вариант используется для всяких ЦветаКонсоли и Символы, что как бы неверно, ибо это не перечисления, а наборы значений.

@EvilBeaver EvilBeaver merged commit 004b18b into EvilBeaver:develop Oct 13, 2016

@EvilBeaver

This comment has been minimized.

Copy link
Owner

EvilBeaver commented Oct 13, 2016

@dmpas Compilation errors

MainWindow.xaml.cs(408, 38): error CS0246: The type or namespace name 'EchoStatus' could not be found (are you missing a using directive or an assembly reference?)

MainWindow.xaml.cs(392, 18): error CS0535: 'Host' does not implement interface member 'IHostApplication.Echo(string, MessageStatusEnum)'

MainWindow.xaml.cs(408, 58): error CS0103: The name 'EchoStatus' does not exist in the current context

MainWindow.xaml.cs(408, 49): error CS1750: A value of type '?' cannot be used as a default parameter because there are no standard conversions to type 'EchoStatus'

@dmpas

This comment has been minimized.

Copy link
Collaborator

dmpas commented Oct 13, 2016

@EvilBeaver ээээ... а у тебя там рабочее пространство перед сборкой вычищается?.. Вот ну ведь не злодей же я, чтобы заливать то, что даже не компилируется :)

@EvilBeaver

This comment has been minimized.

Copy link
Owner

EvilBeaver commented Oct 13, 2016

Ошибка в xaml а в монодевелопе он вроде как выключен

@dmpas

This comment has been minimized.

Copy link
Collaborator

dmpas commented Oct 13, 2016

@EvilBeaver едрить! ща пофикшу. ну или пофиксю.

@EvilBeaver

This comment has been minimized.

Copy link
Owner

EvilBeaver commented Oct 14, 2016

ща пофикшу. ну или пофиксю

"Исправлю"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment