01) Create Any Simple Dll Assembly In .Net By csc /t:library <source>
    Command. Note That Any .Net Dll Is By Default Component Based,
    Though We Don't See Any IUnknown, IDispatch etc In It. For Example
    Write DotNetServer.cs File With A public class DotNetMultiplyDevide
    And Which Has Two Public Methods MultiplicationOfTwoIntegers() &
    DivisionOfTwoIntegers(). Above Command Will Create A Dll Assembly
    Say DotNetServer.dll.
02) Now Use A .Net Utility RegAsm.Exe To Create COM Callable Wrapper
    ( CCW ) Class Containing Type Library. This Is Done By Using /tlb
    Switch With Above Utility. Eg : RegAsm.exe DotNetServer.dll /tlb
    This Command Will Create DotNetServer.tlb File. Not Only This, But
    Above Command Registers Newly Created Type Library Into Registry.
03) Keep Type Library In The COM Client's Project Directory And Keep
    .Net Server's Dll Into That Directory From Where The COM Client's
    Exe Will Run ( Eg : COM Client Project's Debug Subdirectory ).
04) While Writing COM Client Code, Use #import Statement For The Newly
    Created Type Library With Three Main a) no_namespace b) named_guids
    3) raw_interfaces_only Attributes. These Attributes Allow Us To Use
    CLSID, IIDs By CoClass's & Interface's Names. To See Which CoClass
    & Interfaces Are Created By .Net In TypeLib, Use Visual Studio's
    Tool Menu's "OLE/COM Object Viewer" Tool And Open Tlb File In It.
    The Output Will Show CoClass And Interface Names. Use Them In Code
    As They Are. Means Though Not Mentioned By Any .Net File, The Term
    CLSID_<coclass name> Becomes Valid Due To "named_guids" Attribute.
05) Now Write Further Code Using IDispatch Automation Methodology.
    Because By Default And Always, When .Net Exposes Its Functionality
    To Unmanaged COM Code, Then Its Default Methodology Is Automation.
    And Thus Use IDispatch Interface And Its Methods.
