C#

Beim Architektur von Enterprise-Anwendungen, ASP.NET Core-Webdiensten oder Unity-Spielsystemen in C# kann das Lesen dichter Klassendateien und Entity Framework die Visualisierung der Anwendungsstruktur erschweren. DieC# Visualizerwandelt C# Klassendefinitionen, Schnittstellen, Datensatztypen und Vererbungshierarchien in klare, interaktive Klassendiagramme um. Durch die Analyse von Eigenschaften, Zugriffsmodifizierern, Schnittstellenverträgen und Klassenvererbung können .NET-Entwickler und Softwarearchitekten Domänenmodelle und Softwareentwürfe auf einen Blick visuell prüfen.

Die Mechanik der C#-Visualisierungen

In VPasCode analysiert die C#-Darstellung automatischclass, interface, undrecordDeklarationen, Eigenschaftenaccessoren ({ get; set; }), sowie Vererbungsbeziehungen in strukturierte UML-artige Diagramme. Klassen werden als primäre Entitätsblöcke dargestellt, Sichtbarkeitsstufen werden deutlich bei Eigenschaften und Methoden angezeigt, und Vererbung (: BaseClass, IInterface) generiert automatisch Beziehungskonnektoren zwischen den visuellen Knoten.

1. Grundlegende Einrichtung

Um ein Standard-C#-Domänenmodell zu visualisieren, definieren Sie Schnittstellen, abstrakte Basisklassen und konkrete abgeleitete Klassen. Kern-Domänenmodelle wie Benutzer-Identitätssysteme zeigen grundlegende Klassenbeziehungen und Schnittstellenimplementierungen:

namespace AccountSystem;

// Schnittstelle zur Definition von Benutzer-Authentifizierungsfunktionen
public interface IAuthenticatable
{
    bool Authenticate(string password);
}

// Abstrakte Basisklasse für die Kontoverwaltung
public abstract class Account : IAuthenticatable
{
    public string Id { get; init; }
    public string Email { get; set; }
    protected bool IsActive { get; set; } = true;

    protected Account(string id, string email)
    {
        Id = id;
        Email = email;
    }

    public abstract void DisplayAccountInfo();

    public bool Authenticate(string password)
    {
        // Standard-Authentifizierungsprüfung
        return IsActive && !string.IsNullOrEmpty(password);
    }
}

// Konkrete Benutzerkontoklasse
public class UserAccount : Account
{
    public string Username { get; set; }
    public List Roles { get; } = new();

    public UserAccount(string id, string email, string username) 
        : base(id, email)
    {
        Username = username;
    }

    public override void DisplayAccountInfo()
    {
        Console.WriteLine($"Benutzer: {Username} ({Email})");
    }
}

 

Erweiterte strukturelle Techniken

C#-Visualisierungen zeichnen sich durch die Darstellung moderner, unveränderlicher Datensätze (C# records), Abhängigkeitsinjektionsverträge und ASP.NET Core-Dienstschichten aus.

1. Unveränderliche Datensätze und Dienstschichtmodell

Durch die Kombination von positionellen C#-Datensätzen für die Datenübertragung mit durch Schnittstellen gesteuerten Dienstverträgen wandelt VPasCode moderne .NET-APIs in saubere, strukturierte Diagrammnetzwerke um:

namespace ECommerce;

// Unveränderlicher C#-Datensatz zur Darstellung von Produkt-Payloads
public record ProductDto(string Id, string Name, decimal Price, bool InStock);

public interface IProductService
{
    Task<ProductDto?> GetProductByIdAsync(string id);
    Task UpdatePriceAsync(string id, decimal newPrice);
}

public class ProductService : IProductService
{
    private readonly string _connectionString;

    public ProductService(string connectionString)
    {
        _connectionString = connectionString;
    }

    public async Task<ProductDto?> GetProductByIdAsync(string id)
    {
        return new ProductDto(id, "Wireless Maus", 29.99m, true);
    }

    public async Task UpdatePriceAsync(string id, decimal newPrice)
    {
        return true;
    }
}

 

Strukturierung von Entity Framework-Datenmodellen und Repositories

Die Visualisierung von Entity Framework Core DbContext-Entitäten, Navigationseigenschaften und Repository-Mustern hilft Backend-Teams, Datenbank-Mappingsverträge und Domänen-Grenzen zu überprüfen.

1. Domain für Bestellverwaltung mit Entity Framework Core

Gruppieren Sie Datenbankentitäten, Navigationssammlungseigenschaften und Repository-Abstraktionen, um klare Datenfluss-Grenzen abzubilden:

namespace DataAccess;

public class Customer
{
    public int CustomerId { get; set; }
    public string FullName { get; set; } = string.Empty;
    public ICollection<Order> Orders { get; set; } = new List<Order>();
}

public class Order
{
    public int OrderId { get; set; }
    public DateTime OrderDate { get; set; }
    public decimal TotalAmount { get; set; }
    
    public int CustomerId { get; set; }
    public Customer Customer { get; set; } = null!;
}

public interface IRepository<T> where T : class
{
    Task<T?> GetByIdAsync(int id);
    Task AddAsync(T entity);
}

 

Strategische Best Practices

  • Beachten Sie die C#-Namenskonventionen:Präfix für Schnittstellen-Namen mit I (z. B. IProductService) damit Verträge in visuellen Klassenhierarchien deutlich hervorstechen.
  • Verwenden Sie Records für immutable DTOs: Definieren Sie wertbasierte Datenübertragungsobjekte mit C# recordStrukturen, um Domänenentitäten von Datenverträgen zu unterscheiden.
  • Nutzen Sie Auto-Eigenschaften: Verwenden Sie die moderne Syntax für automatisch implementierte Eigenschaften ({ get; set; } oder { get; init; }) um Diagrammkarten knapp und übersichtlich zu halten.
Nach oben scrollen