extern alias CoreLib;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Codanna.Examples.CSharp
{
public interface IDataProcessor
{
string ProcessData(string data, ProcessingOptions options);
bool ValidateData(string data);
}
public class DataProcessorService : IDataProcessor
{
private readonly ILogger _logger;
private readonly IValidator _validator;
public DataProcessorService(ILogger logger, IValidator validator)
{
_logger = logger;
_validator = validator;
}
public string ProcessData(string data, ProcessingOptions options)
{
if (!ValidateData(data))
{
_logger.LogError("Invalid data provided");
throw new ArgumentException("Data validation failed", nameof(data));
}
var transformed = Transform(data, options);
_logger.LogInfo("Data processed successfully");
return transformed;
}
public bool ValidateData(string data)
{
return _validator.Validate(data);
}
private string Transform(string data, ProcessingOptions options)
{
return options.Apply(data);
}
}
public abstract class BaseService
{
protected readonly Guid ActivityId;
protected BaseService()
{
ActivityId = Guid.NewGuid();
}
protected virtual void LogDiagnostic(string message)
{
Console.WriteLine($"[{ActivityId}] {message}");
}
public abstract void Execute();
}
public class ConcreteService : BaseService
{
public override void Execute()
{
LogDiagnostic("Executing concrete service");
}
}
public class ProcessingOptions
{
public int TimeoutSeconds { get; set; }
public bool EnableCompression { get; set; }
public string Name { get; }
private readonly DateTime _createdAt;
public ProcessingOptions()
{
TimeoutSeconds = 30;
EnableCompression = false;
Name = "Default";
_createdAt = DateTime.UtcNow;
}
public string Apply(string data)
{
return EnableCompression ? Compress(data) : data;
}
private string Compress(string data)
{
return $"compressed[{data}]";
}
}
public enum ProcessingStatus
{
Pending = 0,
InProgress = 1,
Completed = 2,
Failed = 3
}
public static class Constants
{
public const int MaxDataSize = 1048576;
public const int DefaultTimeout = 30;
public const string ApplicationName = "Codanna C# Test Suite";
}
public interface ILogger
{
void LogInfo(string message);
void LogError(string message);
}
public interface IValidator
{
bool Validate(string data);
}
public class Result<T>
{
public T Value { get; }
public bool IsSuccess { get; }
public string ErrorMessage { get; }
private Result(T value, bool isSuccess, string errorMessage)
{
Value = value;
IsSuccess = isSuccess;
ErrorMessage = errorMessage;
}
public static Result<T> Success(T value)
{
return new Result<T>(value, true, null);
}
public static Result<T> Failure(string errorMessage)
{
return new Result<T>(default(T), false, errorMessage);
}
}
public class AsyncHandler
{
public async Task<string> ProcessAsync(string data)
{
await Task.Delay(100);
return data.ToUpper();
}
public async Task ProcessFireAndForgetAsync(string data)
{
await Task.Delay(50);
Console.WriteLine(data);
}
}
public class Container
{
public class NestedConfig
{
public string Setting { get; set; }
}
private class NestedHelper
{
public void Help() { }
}
}
public static class StringExtensions
{
public static string Reverse(this string input)
{
if (string.IsNullOrEmpty(input))
return input;
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
public static bool IsPalindrome(this string input)
{
return input == Reverse(input);
}
}
public delegate string DataTransformer(string input);
public class DataProcessedEventArgs : EventArgs
{
public string Data { get; set; }
public DateTime ProcessedAt { get; set; }
}
public class EventPublisher
{
public event EventHandler<DataProcessedEventArgs> DataProcessed;
private EventHandler<DataProcessedEventArgs> _customEvent;
public event EventHandler<DataProcessedEventArgs> CustomEvent
{
add
{
_customEvent += value;
}
remove
{
_customEvent -= value;
}
}
protected virtual void OnDataProcessed(string data)
{
DataProcessed?.Invoke(this, new DataProcessedEventArgs
{
Data = data,
ProcessedAt = DateTime.UtcNow
});
_customEvent?.Invoke(this, new DataProcessedEventArgs
{
Data = data,
ProcessedAt = DateTime.UtcNow
});
}
}
public struct Point
{
public int X { get; set; }
public int Y { get; set; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public double DistanceTo(Point other)
{
int dx = X - other.X;
int dy = Y - other.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
}
public record Person(string FirstName, string LastName, int Age)
{
public string FullName => $"{FirstName} {LastName}";
}
public record Employee(string FirstName, string LastName, int Age, string Department)
: Person(FirstName, LastName, Age);
public class StringCollection
{
private string[] _items = new string[100];
public string this[int index]
{
get { return _items[index]; }
set { _items[index] = value; }
}
public string this[string key]
{
get { return _items[key.GetHashCode() % 100]; }
set { _items[key.GetHashCode() % 100] = value; }
}
}
public struct Complex
{
public double Real { get; set; }
public double Imaginary { get; set; }
public Complex(double real, double imaginary)
{
Real = real;
Imaginary = imaginary;
}
public static Complex operator +(Complex a, Complex b)
{
return new Complex(a.Real + b.Real, a.Imaginary + b.Imaginary);
}
public static Complex operator -(Complex a, Complex b)
{
return new Complex(a.Real - b.Real, a.Imaginary - b.Imaginary);
}
public static implicit operator Complex(double real)
{
return new Complex(real, 0);
}
public static explicit operator double(Complex c)
{
return c.Real;
}
}
public class ResourceManager
{
private IntPtr _handle;
public ResourceManager(IntPtr handle)
{
_handle = handle;
}
~ResourceManager()
{
if (_handle != IntPtr.Zero)
{
_handle = IntPtr.Zero;
}
}
}
}