Implementacja cech w języku C# przy użyciu Roslyn Source Generators
##plugins.themes.bootstrap3.article.sidebar##
Numer Tom 15 Nr 4 (2025)
-
Sterowanie lewitacją magnetyczną za pomocą regulatora PID z adaptacją opartą na liniowej interpolacji i algorytmie genetycznym
Dominik Fila, Andrzej Neumann, Bartosz Olesik, Jakub Pawelec, Kamil Przybylak, Mateusz Ungier, Dawid Wajnert5-9
-
Opracowanie systemu prognozowania awarii maszyn pakujących
Nataliia Huliieva, Nataliia Lishchyna, Viktoriya Pasternak, Zemfira Huliieva10-13
-
Opracowanie i weryfikacja modułowej, obiektowo zorientowanej architektury kontrolera logiki rozmytej dla konfigurowalnych i wbudowanych aplikacji
Rahim Mammadzada14-24
-
Energia pękania mechanicznego i właściwości strukturalno-mechaniczne przekąsek mięsnych z dodatkiem produktów pszczelich
Artem Antoniv, Igor Palamarchuk, Leonora Adamchuk, Marija Zheplinska25-31
-
Modelowanie procesów dynamicznych w układzie nieholonomicznym w postaci równania Gibbsa-Appella na przykładzie młyna kulowego
Volodymyr Shatokhin, Yaroslav Ivanchuk, Vitaly Liman, Sergii Komar, Oleksii Kozlovskyi32-38
-
Diagnostyka Covid-19 w czasie rzeczywistym na wbudowanych platformach IoT
Elmehdi Benmalek, Wajih Rhalem, Atman Jbari, Abdelilah Jilbab, Jamal Elmhamdi39-45
-
Hybrydowe modele do diagnozy choroby Parkinsona na podstawie pisma ręcznego
Asma Ouabd, Achraf Benba, Abdelilah Jilbab, Ahmed Hammouch46-50
-
System komputerowy do diagnostyki i terapii pomijania stronnego
Krzysztof Strzecha, Agata Bukalska-Strzecha, Krzysztof Kurzdym, Dominik Sankowski51-55
-
Informatyka i pomiary w opiece zdrowotnej: głębokie uczenie się w celu przewidywania ponownych hospitalizacji pacjentów z cukrzycą
Shiva Saffari, Mahdi Bahaghighat56-64
-
Optymalizacja dokładności nieinwazyjnego monitorowania poziomu glukozy za pomocą czujnika optycznego
Nurzhigit Smailov, Aliya Zilgarayeva, Sergii Pavlov, Balzhan Turusbekova, Akezhan Sabibolda65-70
-
Stochastyczna wielocelowa optymalizacja minimaksowa połączonego ekranu elektromagnetycznego w oparciu o trójwymiarowe modelowanie pola magnetycznego napowietrznych linii elektroenergetycznych
Borys Kuznetsov, Tatyana Nikitina, Alexander Kutsenko, Ihor Bovdui, Kostiantyn Czunikhin, Olena Voloshko, Roman Voliansky, Viktoriia Ivannikova71-75
-
Zaawansowane strategie zarządzania energią dla mikrosieci AC/DC
Zouhir Boumous, Samira Boumous, Tawfik Thelaidjia76-82
-
Eksperymentalne badanie układu przekształtnika wielostopniowego
Kyrmyzy Taissariyeva, Kuanysh Muslimov, Yerlan Tashtay, Gulim Jobalayeva, Lyazzat Ilipbayeva, Ingkar Issakozhayeva, Akezhan Sabibolda83-86
-
Prognozowanie parametrów strukturalnych w nanostrukturach plazmonicznych symulowanych metodą FDTD z wykorzystaniem uczenia głębokiego
Shahed Jahidul Haque, Arman Mohammad Nakib87-94
-
Opracowanie algorytmu obliczania procesów wymiany jonowej z użyciem ekosystemu Python
Iryna Chub, Oleksii Proskurnia, Kateryna Demchenko, Oleksandr Miroshnyk, Taras Shchur, Serhii Halko95-99
-
Inteligentny model sterowania niezawodnością i bezpieczeństwem w systemach transportu miejskiego
Anastasiia Kashkanova, Alexander Rotshtein, Andrii Kashkanov, Denis Katelnikov100-107
-
Analiza interakcji elementów modułowego systemu przechowywania paczek z wykorzystaniem diagramów UML
Lyudmila Samchuk, Yuliia Povstiana, Anastasia Hryshchuk108-116
-
Ocena zmodyfikowanych heurystyk wstawiania par w celu wystarczającego rozwiązania problemu transportu na żądanie w logistyce opieki zdrowotnej
Rodolfo Eleazar Pérez Loaiza, Aaron Guerrero-Campanur, Edmundo Bonilla Huerta117-123
-
Analiza nowoczesnych narzędzi, metod audytu i monitorowania bezpieczeństwa baz danych
Kateryna Mykhailyshyn, Oleh Harasymchuk, Oleh Deineka, Yurii Dreis, Volodymyr Shulha, Yuriy Pepa124-129
-
Poprawa jakości obrazów podwodnych poprzez połączenie metody Deep‑Retinex i sieci GAN
Anuradha Chinta, Bharath Kumar Surla, Chaitanya Kodali130-136
-
Matematyczna metoda oceny stanu cyberbezpieczeństwa usług chmurowych
Yevheniia Ivanchenko, Volodymyr Shulha, Ihor Ivanchenko, Yevhenii Pedchenko, Mari Petrovska137-141
-
Ocena wydajności wdrożeń LLM w wybranych usługach kontenerowych opartych na chmurze
Mateusz Stęgierski, Piotr Szpak, Sławomir Przyłucki142-150
-
Implementacja cech w języku C# przy użyciu Roslyn Source Generators
Mykhailo Pozur, Viktoria Voitko, Svitlana Bevz, Serhii Burbelo, Olena Kosaruk151-157
-
Wpływ dostosowywalnego harmonogramowania orkiestratora na wydajność uczenia maszynowego w urządzeniach brzegowych
Konrad Cłapa, Krzysztof Grudzień, Artur Sierszeń158-163
-
Rekonfigurowana architektura CoARX do implementacji funkcji haszującej ARX w mikrokontrolerach systemów IoT o ograniczonych zasobach
Serhii Zabolotnii, Inna Rozlomii, Andrii Yarmilko, Serhii Naumenko164-169
-
Integralna ocena jakości wody źródlanej z wykorzystaniem zestawu narzędzi logiki rozmytej
Vyacheslav Repeta, Oleksandra Krykhovets, Yurii Kukura170-176
-
Wybrane zagadnienia dotyczące światłowodowych czujników zgięcia
Les Hotra, Jacek Klimek, Ihor Helzhynskyy, Oksana Boyko, Svitlana Kovtun177-181
Archiwum
-
Tom 16 Nr 2
2026-06-30 27
-
Tom 16 Nr 1
2026-03-30 27
-
Tom 15 Nr 4
2025-12-20 27
-
Tom 15 Nr 3
2025-09-30 24
-
Tom 15 Nr 2
2025-06-27 24
-
Tom 15 Nr 1
2025-03-31 26
-
Tom 14 Nr 4
2024-12-21 25
-
Tom 14 Nr 3
2024-09-30 24
-
Tom 14 Nr 2
2024-06-30 24
-
Tom 14 Nr 1
2024-03-31 23
-
Tom 13 Nr 4
2023-12-20 24
-
Tom 13 Nr 3
2023-09-30 25
-
Tom 13 Nr 2
2023-06-30 14
-
Tom 13 Nr 1
2023-03-31 12
-
Tom 11 Nr 4
2021-12-20 15
-
Tom 11 Nr 3
2021-09-30 10
-
Tom 11 Nr 2
2021-06-30 11
-
Tom 11 Nr 1
2021-03-31 14
##plugins.themes.bootstrap3.article.main##
Authors
Abstrakt
Artykuł 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.
Słowa kluczowe:
Cele Zrównoważonego Rozwoju (SDG)
- Innowacyjność, Przemysł, Infrastruktura
Bibliografia
[1] Albalooshi F., Mahmood A.: A Comparative Study on the Effect of Multiple Inheritance Mechanism in Java, C++, and Python on Complexity and Reusability of Code. Int. J. Adv. Comput. Sci. Appl. 8(6), 2017, 109–116 [https://doi.org/10.14569/ijacsa.2017.080614].
[2] Arora H., Servetto M., Oliveira B. C. D. S.: Separating Use and Reuse to Improve Both. The Art, Science, and Engineering of Programming 3(3), 2019 [https://doi.org/10.22152/programming-journal.org/2019/3/12].
[3] AutoInterface, 2025 [https://github.com/beakona/AutoInterface].
[4] Bergel A. et al.: Stateful Traits. De Meuter W. (eds): Advances in Smalltalk. ISC 2006. Lecture Notes in Computer Science 4406. Springer, Berlin, Heidelberg 2007 [https://doi.org/10.1007/978-3-540-71836-9_4]
[5] Black A. P., Schärli N., Ducasse S.: Applying Traits to the Smalltalk Collection Classes. ACM SIGPLAN Not. 38(11), 2003, 47–64 [https://doi.org/10.1145/949343.949311].
[6] Cassou D., Ducasse S., Wuyts R.: Traits at work: The design of a new trait-based stream library. Comput. Lang., Syst. & Struct. 35(1), 2009, 2–20 [https://doi.org/10.1016/j.cl.2008.05.004].
[7] Ducasse S. et al.: Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 28(2), 2006, 331–388 [https://doi.org/10.1145/1119479.1119483]
[8] Ducournau R., Morandat F., Privat J.: Empirical assessment of object-oriented implementations with multiple inheritance and static typing. ACM SIGPLAN Not. 44(10), 2009, 41–60 [https://doi.org/10.1145/1639949.1640093].
[9] Explicit Interface Implementation – C#, 2022 [https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation].
[10] Gerr P.: Incremental Roslyn Source Generators In .NET 6: Code Sharing Of The Future – Part 1. 2022 [https://www.thinktecture.com/net/roslyn-source-generators-introduction/].
[11] Hossain M.: Understanding Traits in PHP: A Guide with Examples, 2024 [https://mohasin-dev.medium.com/understanding-traits-in-php-a-guide-with-examples-84f14f1b7b43].
[12] Immutype, 2025 [https://github.com/DevTeam/Immutype].
[13] Introducing C# Source Generators, 2025 [https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/].
[14] Lock A.: Understanding C# 8 default interface methods. 2024 [https://andrewlock.net/understanding-default-interface-methods/].
[15] Mr Prime: Mixins in Ruby, 2024 [https://medium.com/@primedruk312/mixins-in-ruby-09e58b226e50].
[16] Muniyandi V.: Harnessing Roslyn for Advanced Code Analysis and Optimization in Cloud- Based .NET Applications on Microsoft Azure. Int. J. Commun. Netw. Secur. 14(3), 2022, 979–990 [https://ijcnis.org/index.php/ijcnis/article/view/8051/2231].
[17] Nichols C., Klabnik S.: Rust Programming Language, 2nd Edition. No Starch Press, Incorporated, 2023.
[18] Partial Classes and Members – C#, 2025 [https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods].
[19] Schärli N. et al.: Traits: Composable Units of Behaviour. In: ECOOP 2003 – Object-Oriented Programming. Springer Berlin Heidelberg, 2003, 248–274 [https://doi.org/10.1007/978-3-540-45070-2_12].
[20] Steyaert P. et al.: Nested Mixin-Methods in Agora. Nierstrasz O. M. (eds): ECOOP’ 93 — Object-Oriented Programming. Springer Berlin Heidelberg, 1993 [https://doi.org/10.1007/3-540-47910-4_12].
[21] StrongInject, 2025 [https://github.com/YairHalberstadt/stronginject].
[22] Tesone P. et al.: A new modular implementation for stateful traits. Sci. Comput. Program. 195, 2020, 102470 [https://doi.org/10.1016/j.scico.2020.102470].
[23] Traits: Defining Shared Behavior, 2025 [https://doc.rust-lang.org/book/ch10-02-traits.html].
[24] Wampler D., Payne A.: Programming Scala. O'Reilly Media, Incorporated, 2014.
[25] Yaqoob E.: Mixins in dart, 2023 [https://medium.com/@emanyaqoob/mixins-in-dart-aed7e89de15d].
##plugins.themes.bootstrap3.article.details##
Abstract views: 405
Downloads: 732

