[TR] IReturn ve IReturn<T> temel hata/success kontrol altyapısı sağlayan bu paket, uygulama katmanlarınızda tek tip sonuç nesneleri kullanarak kod tekrarını azaltmanızı ve merkezi bir hata/yönetim stratejisi oluşturmanızı amaçlar. Geleneksel metot imzalarından dönen ham veriler veya null kontrolleri yerine, her bir işlem çağrısının sonucu olarak en azından bir IReturn nesnesi döndürülür. Bu sayede: - Kodunuzda “Status” kontrolü, hata mesajı ve istisna bilgisi tek bir objede toplanır. - IReturn<T> sayesinde, veri taşıyan operasyonda hem “Status” hem de “Data” değerlerini birlikte kontrol edebilirsiniz. - NullDataSuccess ve NullDataError gibi ön tanımlı tipler ile filtre sonuçlarında “hata yok ama veri null” veya “hata ile veri null” senaryolarını kolayca yönetebilirsiniz. - Tüm başarı ve hata senaryoları, SuccessReturn ve ErrorReturn sınıfları kullanılarak standartlaştırılmıştır. - Genişleyebilir yapısı sayesinde ilerleyen sürümlerde logging, JSON yapılandırma ve daha ileri seviye hata yönetimi kolayca eklenebilir. - SOLID ve Clean Code prensiplerine uygun, immutable record tipleriyle yazıldığı için thread-safe ve bakımı kolay bir altyapı sunar. Bu paket yalnızca .NET 8 ve üzeri sürümlerle uyumludur. NuGet üzerinden kolayca referans alınarak kullanılabilir. Uygulamanızda ihtiyaç duyduğunuz tüm “başarı/başarısızlık” dönüşlerini tek bir standart içinde toplar, geliştirici deneyimini iyileştirirken hata ayıklamayı da basitleştirir. [EN] This package provides the fundamental error/success handling infrastructure via IReturn and IReturn<T> interfaces, aiming to reduce code repetition and establish a centralized result management strategy across your application layers. Instead of returning raw data or performing null checks directly, every method invocation returns at least an IReturn object. With this approach: - The “Status” check, error message, and exception details are encapsulated in a single object. - IReturn<T> allows you to handle both “Status” and “Data” values together in data-carrying operations. - Predefined types such as NullDataSuccess and NullDataError make it effortless to handle “no error but data is null” or “error with null data” scenarios in filtering operations. - All success and error scenarios are standardized via the SuccessReturn and ErrorReturn classes. - Its extensible design enables easy addition of logging, JSON configuration, and advanced error management in future versions. - Written using immutable record types following SOLID and Clean Code principles, it offers a thread-safe and maintainable infrastructure. This package is compatible only with .NET 8 and later versions. It can be referenced via NuGet to provide a unified standard for all “success/failure” returns in your application, enhancing developer experience and simplifying debugging.
$ dotnet add package TahaMucasiroglu.ReturnTahaMucasiroglu.Return, C# dünyasında metot ve servis çağrılarınızın dönüş değerlerini standartlaştırmak için tasarlanmış küçük ve hafif bir kütüphanedir.
IReturn ve IReturn<T> arayüzleri ile hata (error) ve başarı (success) durumlarını tek bir nesnede tutmanızı sağlar.
Ana hedefler:
IReturn/IReturn<T> kullanımıyla tek tip sonuç nesnesi döndürmek.Data) tek bir objede toplanır.record yapılarıyla thread-safe ve bakımı kolay altyapı sağlamak.Özellikler / Features
IReturn arayüzü: Sadece durumu (Status), mesajı (Message) ve istisnayı (Exception) taşır.IReturn<T> arayüzü: Buna ek olarak Data özelliğiyle dönen veriyi de içerir.Return, Return<T>: Temel implemantasyonlar.SuccessReturn, SuccessReturn<T>: Başarılı dönüşler için hazır record tipler.ErrorReturn, ErrorReturn<T>: Hata durumlarını temsil eden hazır record tipler.NullDataSuccess<T>, NullDataError<T>: “Hata değil ama veri yok” ve “Hata & veri yok” senaryoları için ön tanımlı türler.En basit yol, .NET CLI kullanarak:
dotnet add package TahaMucasiroglu.Return
Kurulumdan sonra, paketi projenize ekleyip aşağıdaki gibi kısa kullanımlar yapabilirsiniz. Yorum satırlarında önce Türkçe, ardından İngilizce açıklama bulacaksınız.
using Return.Abstract;
using Return.Concrete;
using Return.Models;
class Program
{
static void Main()
{
// [TR] Basit başarılı dönüş: data ve mesaj
// [EN] Simple success return: with data and message
IReturn<string> ok = new SuccessReturn<string>("Merhaba Dünya");
// "Hello World"
Console.WriteLine($"[TR] Başarı? {ok.Status}, Veri: {ok.Data}");
// [EN] Success? True, Data: Hello World
Console.WriteLine();
// [TR] Hata dönüşü: sadece mesaj
// [EN] Error return: message only
IReturn err = new ErrorReturn("Bir hata oluştu!");
// "An error occurred!"
Console.WriteLine($"[TR] Başarı? {err.Status}, Mesaj: {err.Message}");
// [EN] Success? False, Message: An error occurred!
Console.WriteLine();
// [TR] Veri null hatası: hata var, veri yok
// [EN] Null-data error: error and no data
IReturn<string> nullErr = new NullDataError<string>("Veri bulunamadı");
// "No data found"
Console.WriteLine($"[TR] Başarı? {nullErr.Status}, Mesaj: {nullErr.Message}");
// [EN] Success? False, Message: No data found
Console.WriteLine();
// [TR] Veri null ama başarılı: hata yok, veri yok
// [EN] Null-data success: no error but no data
IReturn<string> nullOk = new NullDataSuccess<string>("Veri yok");
// "No data"
Console.WriteLine($"[TR] Başarı? {nullOk.Status}, Mesaj: {nullOk.Message}");
// [EN] Success? True, Message: No data
}
}
Aşağıda, sonraki sürümlerde eklemeyi planladığımız başlıca özellikler listelenmiştir. Her madde hem Türkçe hem İngilizce açıklama içerir.
Logger Desteği / Logger Support
Program.cs veya Startup.cs üzerindenJSON Tabanlı Hata/Yanıt Yapısı / JSON-Based Error/Response Handling
{ "status": false, "message": "...", "errorCode": 123, "details": { ... } }.Multi-Targeting Desteği (net6.0 / net7.0 / net8.0) / Multi-Targeting Support
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks> kullanmak.Gelişmiş Exception Handling Helpers / Advanced Exception Handling Helpers
Swagger/OpenAPI Entegrasyonu / Swagger/OpenAPI Integration
IReturn<T> tipi kullanıldığında otomatik olarakÖzel Hata Kodları ve Localization / Custom Error Codes & Localization
1001, 2002 vb.) ile bir enum veya sabitler koleksiyonu olarak sunmak.Unit Test ve Kod Kapsamı (Code Coverage) / Unit Testing & Code Coverage
Dokümantasyon ve Örnek Projeler / Documentation & Sample Projects
CLI Araçları / CLI Tools
dotnet CLI altında dotnet return init veya dotnet return gen gibi komutlarla,IReturn şablonları veya konfigürasyon dosyaları oluşturmayı kolaylaştırmak.Bu özellikler üzerinde çalışarak, paketimizin kullanım kolaylığını, esnekliğini ve genişletilebilirliğini artırmayı hedefliyorum.
TahaMucasiroglu.Return is a small and lightweight library designed to standardize the return values of your method and service calls in the C# world. With the IReturn and IReturn<T> interfaces, it allows you to encapsulate both error and success states in a single object.
Main goals:
IReturn/IReturn<T>.Data) into one object.record structures following SOLID & Clean Code principles.Features
IReturn interface: Carries only Status, Message, and Exception.IReturn<T> interface: In addition to the above, includes a Data property to hold returned data.Return, Return<T>: Core implementations.SuccessReturn, SuccessReturn<T>: Predefined record types for successful returns.ErrorReturn, ErrorReturn<T>: Predefined record types for error states.NullDataSuccess<T>, NullDataError<T>: Predefined types for “no error but no data” and “error & no data” scenarios.The simplest way is to use the .NET CLI:
dotnet add package TahaMucasiroglu.Return
🚀 Usage Example After installing the package, add it to your project and use it as shown below. Only English comments are included.
using Return.Abstract;
using Return.Concrete;
using Return.Models;
class Program
{
static void Main()
{
// Simple success return: with data and message
IReturn<string> ok = new SuccessReturn<string>("Hello World");
Console.WriteLine($"Success? {ok.Status}, Data: {ok.Data}");
Console.WriteLine();
// Error return: message only
IReturn err = new ErrorReturn("An error occurred!");
Console.WriteLine($"Success? {err.Status}, Message: {err.Message}");
Console.WriteLine();
// Null-data error: error and no data
IReturn<string> nullErr = new NullDataError<string>("No data found");
Console.WriteLine($"Success? {nullErr.Status}, Message: {nullErr.Message}");
Console.WriteLine();
// Null-data success: no error but no data
IReturn<string> nullOk = new NullDataSuccess<string>("No data");
Console.WriteLine($"Success? {nullOk.Status}, Message: {nullOk.Message}");
}
}
Aşağıda, sonraki sürümlerde eklemeyi planladığımız başlıca özellikler listelenmiştir. Her madde hem Türkçe hem İngilizce açıklama içerir.
Logger Desteği / Logger Support
Program.cs or Startup.cs so that developers can enable/disable orJSON Tabanlı Hata/Yanıt Yapısı / JSON-Based Error/Response Handling
{ "status": false, "message": "...", "errorCode": 123, "details": { ... } }.Multi-Targeting Desteği (net6.0 / net7.0 / net8.0) / Multi-Targeting Support
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>Gelişmiş Exception Handling Helpers / Advanced Exception Handling Helpers
Swagger/OpenAPI Entegrasyonu / Swagger/OpenAPI Integration
IReturn<T> types, SwaggerÖzel Hata Kodları ve Localization / Custom Error Codes & Localization
1001, 2002, etc.) for consistent handling across projects.Unit Test ve Kod Kapsamı (Code Coverage) / Unit Testing & Code Coverage
Dokümantasyon ve Örnek Projeler / Documentation & Sample Projects
CLI Araçları / CLI Tools
dotnet (e.g., dotnet return init or dotnet return gen)IReturn templates or configuration files in a project.By working on these features, we aim to increase the ease of use, flexibility, and extensibility of our package.