Skip to main content

Posts

Current Read

These days I am reading about EA patterns. Check the book by Martin Fowler http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-signature/dp/0321127420/ref=sr_1_2?ie=UTF8&s=books&qid=1253946947&sr=1-2-spell

Interface Vs Abstract

Interface.. 1. A class can implement from many interfaces 2. A class may or may not implement all methods of an interface 3. There can no fields in a interface 4. There can be no access modifiers. By default all methods are public. 5. No default implementation allowed in interface 6. Define peripherial abilities of a class which two different types of sub classes can inherit 7. Performance: codes requires more time to find the actual method in a class 8. Adding new method to base interface class would require finding all classes that implement the interface and implementing new method Abstract 1. A class can inherit from only one abstract class 2. A class has to implement all methods of an interface 3. Fields are allowed 4. Different access modifiers are allowed. 5. You can provide default implementations 6. Defines core abilities of a class. 7. Performace: fast 8. Adding new method, we can provide a default implementation for all classes in one base abstract class. A good example can ...

String.Format

In Microsoft.Net most of the objects implement .ToString() function. This is a very powerful function which returns string representation of underlying object. However if it is overused with concation operators like + in C#, it can have serious performace hit for large application. The problem with concatenation is that it create a new string for every concatenation operator and assigns memory to it. If it is just string concatenation you are looking for, use StringBuilder class instead. A better and Microsoft recomended way of formatting strings is to use String.Format. This is a very powerful funation and you would be amazed by the number of formats it support. Once you get hang of it, you will never go back to using .ToString. Here is an example. Say you wany to display current date time. Your normal code would be Response.write("Todays Date is: " + DateTime.Now.ToString("dd/MM/YYYY")); A better way would be Reponse.Write(String.Format("Todays Date is:{0:dd/...

Default Constructors

A default constructor is one with no parameters. If you don't provide one for your class, the compiler will create on default constructor for your class. However if you do provide a constructor with or without any parameters then the compiler doesn't create a default constructor for you.

Implicit Dispose and using statement

In C# you can make sure Dispose is always called for an object, if the object is created within using statment for e.g using(Font onefont = new Font("Courier") { //do something } When the using blocks end, Dispose on the Font will be called automatically. Even if there is exception while creating the object or within the using block, Dispose method will still be called. An implicit finallt block is created for you.

Static in C#

Staic Member: You can access static member through the name of the class in which it is declared. E.g. className.StaticMethod(); You cannot access a static member through the instance of its class. In C# there are no global methods. Static methods are similar to global method but with the advantage that they have access to local members. Equivalent of Static in VB.Net is Shared (and not Static which creates a variable that exists throughout the lifecycle of the program. Also it is not shared among different instance of the class.) For static methods to access the non static methods of the same class, they must create instance of the class. Static Constructor: It is guarnteed to run before the instance of the class is created. You cannot control when it will run though. No access modifiers are allowed on static contructors. You can use initializer instead of static constructor. Static class: useful in creating small utility class holding static methods. Also it makes sure that you dont ...

Copy Constructor

C# doesn't have Copy constructor like C++. Instead it provides ICloneable interface which has Clone method. Class that supports the idea of copy constructor should implement ICloneable interface and then implement Clone method either using Shallow Copy (??) calling MemberwiseClone or Deep copy (??) i.e hand coping all members. Shallow Copy Deep Copy

Microsoft Naming Conventions

Microsoft recommends following naming conventions Variables : use came case e.g. someName Method : use Pascal case e.g. SomeMethod. Also name the method by the action they perform e.g. WriteLine. Microsoft does not recommends Hungarian notation e.g. iSomeInteger or underscore e.g. Some_Integer. Coding standard: Always use this to refer to the members of current class. Never make a member field as public. Always create properties or methods to allow access to member fields.

XML to PDF in .Net

Has anyone used XALAN.Net to generate PDF from XML? It is working fine generating Pdf from FO but I am having problems if I generate FO using XslCompiledTransform to convert XML to FO. The FO file generated by using XslCompiledTransform is different compared to the file generated using XALAN in java. Both are using same style sheet. I am still scratching me head....any tip would be useful. I will post the solution if I can find any... Raj