Kontur.Recognition
Client
Server
DTO формы
DTO формы
Валидация формы
Валидация формы
Хэлперы
Хэлперы
Client
Server
DTO формы
DTO формы
Валидация формы
Валидация формы
Хэлперы
Хэлперы
Client
Server
DTO формы
Валидация формы
Хэлперы
Хэлперы
Хэлперы
C#
Подходы
JS
JS
C#
C#
JS
node.js
edge.js
codegen
Open-source решения для кодогена
private static List<ValidationResult> ValidateInn(string inn) {
List<ValidationResult> results = new List<ValidationResult>();
bool isIndividual = InnKppHelper.IsInnForIndividual(inn);
bool isInnForLegalEntity = InnKppHelper
.IsInnForLegalEntity(inn);
if (isIndividual || isInnForLegalEntity) {
if (!InnKppHelper.IsInnChecksumValid(inn)) {
results.Add(new ValidationResult {
Field = MetaField.Inn,
Code = ValidationErrorLevel.Error,
Message =
"Неверная контрольная сумма ИНН"
});
}
}
}
На входе
private static ValidateInn(inn: string): List<ValidationResult> {
var list: List<ValidationResult> = new List<ValidationResult>();
var flag: boolean = InnKppHelper.IsInnForIndividual(inn);
var flag2: boolean = InnKppHelper
.IsInnForLegalEntity(inn);
if (flag || flag2) {
if (!InnKppHelper.IsInnChecksumValid(inn)) {
var arg_5D_0: List<ValidationResult> = list;
var validationResult: ValidationResult =
new ValidationResult();
validationResult.Message =
"Неверная контрольная сумма ИНН";
arg_5D_0.Add(validationResult);
}
}
}
На выходе
Кодоген: парсинг
ILSpy
NRefactory
пример разбора выражения
C# -> AST
Кодоген: генерация
CsToTs
TsOutputVisitor
пример сбора того же выражения
C# AST -> TS
Ну сейчас заведется...
Готовая сборка
примеры необходимых методов
Цельный бандл
Готовая сборка
Процесс сборки
C#
DLL
TypeScript
JS
PROFIT!
NetJS
webpack
msbuild
???
Процесс сборки
C#
DLL
TypeScript
Fixed TS
JS
PROFIT!
NetJS
webpack
gulp
msbuild
???
2
1
(1) webpack: референсы
///<reference path='mscorlib.ts'/>
... my ts code ...
import {
NObject,
Exception,
NBoolean,
...
} from './mscorlib.ts';
(1) webpack: экспорты
class DocumentExtensions extends NObject ...
export class DocumentExtensions
extends NObject ...
+ enum, interface
(2) netjs: mscorlib.ts
class NString {
...
static TrimEnd(str: string, trimChars: number[]): string
{
throw new NotImplementedException();
}
...
}
(2) netjs: ES3
class Person {
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
class Person extends NObject {
name: string;
SetName(value: string): void
{
this.name = value;
}
GetName(): string
{
return this.name;
}
}
tsc.exe -t ES3 mscorlib.es3.ts Library.ts --out Library.js
В итоге:
пример усложнения для C#
Но этого было мало!
netjs-loader
Когда это нужно вам?
что дальше?
контакты