.NET and COM Interterview Questions
|
- Describe
the advantages of writing a managed code application instead of
unmanaged one. What’s involved in certain piece of code being managed?
The advantages include automatic
garbage collection, memory management, support for versioning and security.
These advantages are provided through .NET FCL and CLR, while with the
unmanaged code similar capabilities had to be implemented through third-party
libraries or as a part of the application itself.
- Are
COM objects managed or unmanaged?
Since COM objects were written before .NET, apparently they
are unmanaged.
- So
can a COM object talk to a .NET object?
Yes, through Runtime Callable Wrapper (RCW) or PInvoke.
- How
do you generate an RCW from a COM object?
Use the Type Library Import utility shipped with SDK. tlbimp
COMobject.dll /out:.NETobject.dll or reference the COM library from
Visual Studio in your project.
- I
can’t import the COM object that I have on my machine.
Did you write that object? You can only import your own objects. If you need
to use a COM component from another developer, you should obtain a Primary
Interop Assembly (PIA) from whoever authored the original object.
- How
do you call unmanaged methods from your .NET code through PInvoke?
Supply a DllImport attribute. Declare the methods in your .NET code as static
extern. Do not implement the methods as they are implemented in your
unmanaged code, you’re just providing declarations for method
signatures.
- Can
you retrieve complex data types like structs from the PInvoke calls?
- Yes,
just make sure you re-declare that struct, so that managed code knows
what to do with it.
- I
want to expose my .NET objects to COM objects. Is that possible?
Yes, but few things
should be considered first. Classes should implement interfaces explicitly.
Managed types must be public. Methods, properties, fields, and events that
are exposed to COM must be public. Types must have a public default constructor
with no arguments to be activated from COM. Types cannot be abstract.
- Can
you inherit a COM class in a .NET application?
The .NET Framework extends the COM model for reusability by adding implementation
inheritance. Managed types can derive directly or indirectly from a COM
coclass; more specifically, they can derive from the runtime callable
wrapper generated by the runtime. The derived type
can expose all the method and properties of the COM object as well as methods
and properties implemented in managed code. The resulting object is
partly implemented in managed code and partly implemented in unmanaged
code.
- Suppose
I call a COM object
from a .NET applicaiton, but COM object throws an error. What happens on
the .NET end? COM methods report errors by
returning HRESULTs; .NET methods report them by throwing exceptions. The
runtime handles the transition between the two. Each exception class in
the .NET Framework maps to an HRESULT.
|
No comments:
Post a Comment
Comment Here