vassilych / cscs

CSCS: Customized Scripting in C#
MIT License
166 stars 47 forks source link

Fixed getting type identifier when merge OBJECTS #32

Closed stv233 closed 1 year ago

stv233 commented 1 year ago

Здравствуйте Василий.

Ваше решение получение индификатора типа выглядит намного лучше, чем было у меня. Но оно не совсем работало для меня, поскольку Convert.ChangeType возвращает object и typeof(T) в Merge Objects возвращало System.Object, из-за чего операции выполнялись неправильно. Я заменил строку с Convert.ChangeType на определение типа через dynamic и теперь для меня всё работает.

Для тестирования операций с объектами я использую тип Vector. Для данного типа при выполнении следующего скрипта:

vector = Vector(1,1,1);
Log(vector);
vector = vector + Vector(1,1,1);
Log(vector);
vector = vector * Vector(4);
Log(vector);
vector = vector / Vector(2);
Log(vector);
Log(vector == Vector(4,4,4));
Log(vector != Vector(4,4,4));
Log(vector == Vector(1,1,1));

Будет характерен вывод:

(1,1,1)
(2,2,2)
(8,8,8)
(4,4,4)
1
0
0

В этом скрипте команда Log выводит строку, полученную выполнением ToString() от получаемого, в качестве аргумента, объекта.

Михаил