| • Aspects | |
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)
{ |
|
| • ComponentModel | | Object Binder. Add Business Objects' native purity and flexibility to your ASP.NET and WinForms applications. |
| • Data | |
High-level, data provider independent wrapper for ADO.NET.
using (DbManager db = new DbManager())
{
return db
.SetCommand("SELECT * FROM Person")
.ExecuteList<Person>(); |
|
| • DataAccess | |
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); |
|
| • EditableObjects | |
Set of base classes to build custom object hierarchies. The EditableObject and EditableList classes support such methods as AcceptChanges, RejectChanges, flag IsDirty, and event 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(); |
|
| • Mapping | | High performance object mapper will help you build your own ORM. |
| • Reflection | | The TypeAccessor class allows to avoid slowness of Reflection and gain incredible performance of applications working with types dynamically. |
| • Reflection.Emit | |
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()
; |
|
| • TypeBuilder | | Extensible run-time class generator. |
| • Validation | | Simple way to do a complex thing. |
|