<link rel="stylesheet" href="styles.f3b1fba60ec7970c.css">

Implementing traits in C# using Roslyn Source Generators

dc.contributor.authorPozur, M.en
dc.contributor.authorVoitko, V.en
dc.contributor.authorBevz, S.en
dc.contributor.authorBurbelo, S.en
dc.contributor.authorKosaruk, O.en
dc.contributor.authorПозур, М. Ю.uk
dc.contributor.authorВойтко, В. В.uk
dc.contributor.authorБевз, С. М.uk
dc.contributor.authorБурбело, С. М.uk
dc.contributor.authorКосарук, О. М.uk
dc.identifier.orcidhttps://orcid.org/0009-0003-5225-2453
dc.identifier.orcidhttps://orcid.org/0000-0002-3329-7256
dc.identifier.orcidhttps://orcid.org/0000-0002-4651-2453
dc.identifier.orcidhttps://orcid.org/0000-0002-8554-2292
dc.identifier.orcidhttps://orcid.org/0000-0003-1346-2944
dc.titleImplementing traits in C# using Roslyn Source Generatorspl
dc.title.alternativeImplementacja cech w języku C# przy użyciu roslyn source generatorspl
dc.date.issued2025
dc.publisherPolitechnika Lubelskapl
dc.identifier.citationPozur M., Voitko V., Bevz S., Burbelo S., Kosaruk O. Implementing traits in C# using Roslyn Source Generators // Informatyka, Automatyka, Pomiary W Gospodarce I Ochronie Środowiska. 2025. № 15 (4). Р. 151–157. URI: https://ph.pollub.pl/index.php/iapgos/article/view/8488.en
dc.relation.ispartofInformatyka, Automatyka, Pomiary W Gospodarce I Ochronie Środowiska. № 15 (4) : 151–157.pl
dc.identifier.doihttp://doi.org/10.35784/iapgos.8488
dc.identifier.issn2083-0157
dc.identifier.urihttps://ir.lib.vntu.edu.ua/handle/123456789/50337
dc.description.abstractСтаття представляє підхід до реалізації функціональності трейтів (traits) у мові програмування C# за допомогою Roslyn Source Generators – засобу метапрограмування часу компіляції, запровадженого в .NET5. Трейти, які є композованими одиницями дрібнозернистого повторного використання, можуть бути корисними для мови C#, запроваджуючи механізм повторного використання поведінки в контексті одиночного успадкування. У статті описано проєкт і реалізацію генератора вихідного коду, який дає змогу додавати анотації до класів за допомогою атрибутів метаданих, автоматично впроваджуючи відповідні визначення членів під час компіляції. Для досягнення кращої продуктивності генерування коду під час проєктування застосовано інкрементні генератори вихідного коду. Детально описано композицію членів трейтів, зосереджуючись на розв’язанні конфліктів імен і безпеці типів завдяки використанню інтерфейсів та механізму перевизначення. Також обговорено й реалізовано визначення непублічних членів у контексті трейта, що забезпечує краще повторне використання коду. Стаття підсумовує, що функції рівня мови, як-от трейти, можна реалізувати в мові C# за допомогою Roslyn Source Generators, демонструючи таким чином потенціал такого засобу й метапрограмування загалом.uk
dc.description.abstractArtykuł przedstawia podejście do implementacji funkcjonalności cech w języku programowania C# poprzez wykorzystanie Roslyn Source Generators, narzędzia do metaprogramowania w czasie kompilacji wprowadzonego w .NET5. Traity, które są komponowalnymi jednostkami drobnoziarnistego ponownego użycia, mogą przynieść korzyści językowi C# poprzez wprowadzenie mechanizmu ponownego użycia zachowania w kontekście pojedynczego dziedziczenia. W artykule opisano projekt i implementację generatora źródłowego, który umożliwia dodawanie adnotacji do klas za pomocą atrybutów metadanych, automatycznie wstrzykując odpowiednie definicje elementów członkowskich w czasie kompilacji. Aby osiągnąć lepszą wydajność generowania kodu w czasie projektowania, zastosowano przyrostowe generatory źródeł. Szczegółowo opisano skład członków cech, koncentrując się na rozwiązywaniu konfliktów nazw i bezpieczeństwie typów poprzez wykorzystanie interfejsów i mechanizmu zastępowania. Omówiono i zaimplementowano również definiowanie niepublicznych członków w kontekście cechy, co pozwala na lepsze ponowne wykorzystanie kodu. Artykuł podsumowuje, że funkcje na poziomie języka, takie jak cechy, można zaimplementować w języku C# za pomocą Roslyn Source Generators, demonstrując w ten sposób potencjał takiego narzędzia i ogólnie metaprogramowania.pl
dc.description.abstractThe paper presents an approach to implementing traits functionality in the C# programming language through the use of Roslyn Source Generators, a compile-time metaprogramming tool introduced in .NET5. Traits, which are composable units of fine-grained reuse, can benefit the C# language by bringing a mechanism for behavior reuse in the context of single inheritance. The article describes the design and implementation of a source generator that allows to annotate classes with metadata attributes, automatically injecting the corresponding member definitions at compile time. To achieve better code generation performance at design time, Incremental Source Generators were used. The composition of trait members is described in detail, focusing on name conflict resolution and type safety by utilizing interfaces and the override mechanism. Defining non-public members in a context of a trait is also discussed and implemented, thus allowing for better code reusability. The article concludes that language-level features such as traits can be implemented in the C# language by using Roslyn Source Generators, thus demonstrating the potential of such an instrument and metaprogramming in general.en
dc.subjectC#en
dc.subjecttraitsen
dc.subjectobject-oriented programmingen
dc.subjectmetaprogrammingen
dc.subjectcode generationen
dc.subjectprogramowanie obiektowepl
dc.subjectmetaprogramowaniepl
dc.subjectgenerowanie kodupl
dc.subjectC#uk
dc.subjectтрейтиuk
dc.subjectоб’єктно-орієнтоване програмуванняuk
dc.subjectметапрограмуванняuk
dc.subjectгенерація кодуuk
dc.typeArticle, Scopus-WoS
dc.typeArticle
dc.language.isoenen
dc.date.accessioned2025-12-26T08:05:50Z
dc.date.available2025-12-26T08:05:50Z

Файли

Контейнер файлів

Зараз показуємо 1 - 1 з 1
Вантажиться...
Ескіз
Назва:
190064.pdf
Розмір:
1,02 MB
Формат:
Adobe Portable Document Format

Ліцензійна угода

Зараз показуємо 1 - 1 з 1
Вантажиться...
Ескіз
Назва:
license.txt
Розмір:
129 B
Формат:
Plain Text
Опис: