Skip to content
Igor Tkachev edited this page May 20, 2016 · 6 revisions

Business Logic Toolkit is a set of components to simplify .NET application development. BLToolkit is provided as source code that you can use "as is" or customize for your applications. It is written in C# and compatible with .NET Frameworks 3.5 and 4.0, Silverlight 4, and Mono.

CacheAspect, CounterAspect, LoggingAspect, MixinAttribute. All of these are available now in C# (well, with one little limitation).

[Counter, Log]
public abstract class MyClass
{
    [Cache]
    public virtual int MyMethod(int p1, int p2)
    {

Object Binder. Add Business Objects' native purity and flexibility to your ASP.NET and WinForms applications.

High-level, data provider independent wrapper for ADO.NET.

using (DbManager db = new DbManager())
{
    return db
        .SetCommand("SELECT * FROM Person")
        .ExecuteList<Person>();

Linq provider for numerous databases.

from c in db.Customer
where c.ContactName.Length > 5
select c.ContactName;

Data Access Layer. Got bored of writing the same data access code over and over again? Now you are saved from being just a coding machine!

public abstract class PersonAccessor : DataAccessor
{
    [SqlText(@"SELECT * FROM Person WHERE FirstName = @firstName")]
    public abstract List<Person> GetPersonListByFirstName(string @firstName);

    [SprocName("sp_GetPersonListByLastName")]
    public abstract List<Person> GetPersonListByLastName(string @lastName);

Set of base classes to build custom object hierarchies. The EditableObject and EditableList classes support such methods as AcceptChanges, RejectChanges, flag IsDirty, and PropertyChanged.

public abstract class TestObject : EditableObject<TestObject>
{
    public abstract string FirstName { get; set; }
    public abstract string LastName  { get; set; }
}
...
TestObject obj = TestObject.CreateInstance();
obj.FirstName = "Tester";
obj.AcceptChanges();

High performance object mapper will help you build your own ORM.

The TypeAccessor class allows to avoid slowness of Reflection and gain incredible performance of applications working with types dynamically.

The EmitHelper class - emit with a human face.

emit
    // string.Format("Hello, {0}!", toWhom)
    //
    .ldstr   ("Hello, {0}!")
    .ldarg_1
    .call    (typeof(string), "Format", typeof(string), typeof(object))

    // Console.WriteLine("Hello, World!");
    //
    .call    (typeof(Console), "WriteLine", typeof(string))
    .ret()
    ;

Extensible run-time class generator.

Clone this wiki locally