<% rss # rss.xml %>
|
|
CacheAspect, CounterAspect, LoggingAspect, MixinAttribute. All of these are available now in C# (well, with one little limitation).
<% cs #
[/*[a]*/Counter/*[/a]*/, /*[a]*/Log/*[/a]*/]
public /*[a]*/abstract/*[/a]*/ class MyClass
{
[/*[a]*/Cache/*[/a]*/]
public /*[a]*/virtual/*[/a]*/ 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.
<% cs #
using (DbManager db = new DbManager())
{
return db
.SetCommand("SELECT * FROM Person")
.ExecuteList();
%>
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!
<% cs #
public /*[a]*/abstract/*[/a]*/ class PersonAccessor : /*[a]*/DataAccessor/*[/a]*/
{
[/*[a]*/SqlText/*[/a]*/(@"SELECT * FROM Person WHERE FirstName = @firstName")]
public /*[a]*/abstract/*[/a]*/ List GetPersonListByFirstName(string @firstName);
[/*[a]*/SprocName/*[/a]*/("sp_GetPersonListByLastName")]
public /*[a]*/abstract/*[/a]*/ List 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 event PropertyChanged.
<% cs #
public /*[a]*/abstract/*[/a]*/ class TestObject : /*[a]*/EditableObject/*[/a]*/
{
public /*[a]*/abstract/*[/a]*/ string FirstName { get; set; }
public /*[a]*/abstract/*[/a]*/ string LastName { get; set; }
}
...
TestObject obj = TestObject./*[a]*/CreateInstance/*[/a]*/();
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.
<% cs #
emit
// string.Format("Hello, {0}!", toWhom)
//
./*[a]*/ldstr/*[/a]*/ ("Hello, {0}!")
./*[a]*/ldarg_1/*[/a]*/
./*[a]*/call/*[/a]*/ (typeof(string), "Format", typeof(string), typeof(object))
// Console.WriteLine("Hello, World!");
//
./*[a]*/call/*[/a]*/ (typeof(Console), "WriteLine", typeof(string))
./*[a]*/ret/*[/a]*/()
;
%>
Extensible run-time class generator.
Simple way to do a complex thing.
|
|