LINUX.ORG.RU

более или менее полноценный typedef в c#

 


0

2

Залез тут в древний код на c# дабы немного подшаманить.
Просто тупо сменить тип используемой переменной вместо одного базового типа (int) сделать другой базовый тип (Int64 ).
А поскольку код разбит по разным файлам хотел сделать новым «типом» аля typedef в «С».
Оказалось фиг вам, можно ввести «using NewType = OldType» и это в каждом файле нужно вводить. Но это же дикость! Или я не достаточно смотрел справку?

Как это сделать для всех файлов разом??
P.S. общий namespace - не помогает для «базовых» типов.

★★★★★

Последнее исправление: Atlant (всего исправлений: 1)

Ты пытаешься сделать лайт версию #define true false. Возьми и просто заменой в редакторе сделай int -> long, если у тебя математика. Если идентификаторы, то смотри в сторону strongly typed id, здесь рефакторинг будет сложнее, но в будущем должно окупиться.

amm ★★
()
Ответ на: комментарий от amm

Простая замена - это понятно
Принцип «strongly typed id» тоже понятен, но не хотелось настолько усложнять.
Но для его реализации придется вместо «базового» типа делать отдельный class/record со своими свойствами методами и т.д.

Atlant ★★★★★
() автор топика
Ответ на: комментарий от amm

Вначале Notepad++ был(думал этим обойдусь), но после пришлось снова ставить Visual Studio.

Если не секрет, то каким редактором ты пользуешься, что тебе приходится применять sed для такой задачи?

Дело не в том какой программой заменять текст, хотел чуть более универсальный способ.

Atlant ★★★★★
() автор топика
Последнее исправление: Atlant (всего исправлений: 1)
Ответ на: комментарий от Atlant

Visual Studio

https://learn.microsoft.com/en-us/visualstudio/ide/replace-in-files

хотел чуть более универсальный способ

Если в программе написано int, то хотелось бы, чтобы это int и был. Если он будет «магическим» образом превращаться в long, никто тебе спасибо не скажет.

amm ★★
()
Ответ на: комментарий от Atlant

Дело не в том какой программой заменять текст, хотел чуть более универсальный способ.

Может и хорошо, что нет, не будет сюрпризов в коде, когда видишь int, а это что-то другое.

anonymous
()

На C# - либо ты изгаляешься с Reflection и подобным, либо пишешь в лоб как макаки в энтерпрайзе.

Либо - https://www.postsharp.net/

Привыкай.

А лучше возьми мой bike:

https://github.com/Lovesan/bike

Там есть глобальные алиасы.

CL-USER> (bike:use-type-alias :con 'System.Console)
; No value
CL-USER> [:con Write "Hello!"]
Hello!
; No value
CL-USER> 
lovesan ★★☆
()