C# + DLL dependency issue

Category: Programming Issue    |    4 views    |    Add a Comment

This is a bit of a weird one, so I’ll try and explain it best I can.
I have 1 dll that contains a third party library of wpf user controls (Bag o tricks). In my framework dll, I added this dll and reference it. I then made my own component that extends one of the components in the third party library. So far so good.

Now if someone else depends on my project, and they try and use the component I offer (that extends the third party component), the following error is thrown:

‘Cannot resolve dependency to assembly ‘J832.Wpf.BagOTricksLib, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.

Is there something I am doing wrong? I figure that if they use my control, that control should have loaded the dll and should know how to use it?

Any ideas would be much appreciated.

Share/Save/Bookmark

 

What is polymorphism in Object Oriented Programming (OOPS) Languages?

Category: OOPS Questions    |    5 views    |    Add a Comment

In object-oriented programming, polymorphism is a generic term that means ‘many shapes’. (from the Greek meaning “having multiple forms”). Polymorphism is briefly described as “one interface, many implementations.” polymorphism is a characteristic of being able to assign a different meaning or usage to something in different contexts - specifically, to allow an entity such as a variable, a function, or an object to have more than one form.

There are two types of polymorphism one is compile time polymorphism and the other is run time polymorphism. Compile time polymorphism is functions and operators overloading. Runtime time polymorphism is done using inheritance and virtual functions. Here are some ways how we implement polymorphism in Object Oriented programming languages

Interface and abstract methods
Like in C# or JAVA different classes implement a common interface in different ways; is an example of Runtime polymorphism. The interface defines the abstract member functions (no implementation). In class that implement the interface; we define body of those abstract members according to the requirement. Means single definition in interface but multiple implementation in child classes.

Virtual member functions
Using virtual member functions in an inheritance hierarchy allows run-time selection of the appropriate member function. A virtual function is a member function of the base class and which is redefined by the derived class. Such functions can have different implementations that are invoked by a run-time determination of the subtype (virtual method invocation, dynamic binding).

Share/Save/Bookmark

 

Interview questions for C# developers

Category: ASP.NET Questions, Dot Net Questions    |    3 views    |    Add a Comment

Useful for preparation, but too specific to be used in the interview.

  1. Is it possible to inline assembly or IL in C# code? - No.
  2. Is it possible to have different access modifiers on the get/set methods of a property? - No. The access modifier on a property applies to both its get and set accessors. What you need to do if you want them to be different is make the property read-only (by only providing a get accessor) and create a private/internal set method that is separate from the property.
  3. Is it possible to have a static indexer in C#? - No. Static indexers are not allowed in C#.
  4. If I return out of a try/finally in C#, does the code in the finally-clause run? - Yes. The code in the finally always runs. If you return out of the try block, or even if you do a “goto” out of the try, the finally block always runs:
    using System;
      class main {
    	public static void Main()
    	{
    try 		{
    		Console.WriteLine("In Try block");
    		return;
    	} 		finally
    	{
    Console.WriteLine("In Finally block");
    		} 	} }
    
    

    Both “In Try block” and “In Finally block” will be displayed. Whether the return is in the try block or after the try-finally block, performance is not affected either way. The compiler treats it as if the return were outside the try block anyway. If it’s a return without an expression (as it is above), the IL emitted is identical whether the return is inside or outside of the try. If the return has an expression, there’s an extra store/load of the value of the expression (since it has to be computed within the try block).

  5. I was trying to use an “out int” parameter in one of my functions. How should I declare the variable that I am passing to it? - You should declare the variable as an int, but when you pass it in you must specify it as ‘out’, like the following: int i; foo(out i); where foo is declared as follows: [return-type] foo(out int o) { }
  6. How does one compare strings in C#? - In the past, you had to call .ToString() on the strings when using the == or != operators to compare the strings’ values. That will still work, but the C# compiler now automatically compares the values instead of the references when the == or != operators are used on string types. If you actually do want to compare references, it can be done as follows: if ((object) str1 == (object) str2) { … } Here’s an example showing how string compares work:
    using System; public class StringTest {
    public static void Main(string[] args) 	{
    	Object nullObj = null; Object realObj = new StringTest();
    		int i = 10;
    Console.WriteLine("Null Object is
    [" + nullObj + "]\n"
    + "Real Object is [" + realObj + "]\n"
    			+ "i is [" + i + "]\n");
    // Show string equality operators 		string str1 = "foo";
    		string str2 = "bar";
    string str3 = "bar"; 		Console.WriteLine("{0} == {1}
     ? {2}", str1, str2, str1 == str2 );
    Console.WriteLine("{0} == {1} ? {2}", str2, str3, str2 == str3 );
    	} }

    Output:

    Null Object is [] Real Object is [StringTest] i is [10]
    foo == bar ? False bar == bar ? True
  7. How do you specify a custom attribute for the entire assembly
    (rather than for a class)?
    - Global attributes must appear after any top-level using clauses and before the first type or namespace declarations. An example of this is as follows:

    using System; [assembly : MyAttributeClass] class X {}

    Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.

  8. How do you mark a method obsolete? -
    [Obsolete] public int Foo() {...}

    or

    [Obsolete("This is a message describing
    why this method is obsolete")]
    public int Foo() {...}

    Note: The O in Obsolete is always capitalized.

  9. How do you implement thread synchronization
    (Object.Wait, Notify,and CriticalSection) in C#?
    -
    You want the
    lock statement, which is the same as Monitor Enter/Exit:

    lock(obj) { // code }

    translates to

    try { 	CriticalSection.Enter(obj);
    // code } finally {
    	CriticalSection.Exit(obj); }
  10. How do you directly call a native function exported
    from a DLL?
    - Here’s a quick example of the DllImport attribute in action:

    using System.Runtime.InteropServices; \ class C {
    [DllImport("user32.dll")] 	public static extern int
    MessageBoxA(int h, string m, string c, int type);
    public static int Main() 	{ 		return
    MessageBoxA(0, "Hello World!", "Caption", 0);
    } }

    This example shows the minimum requirements for declaring a C# method that is implemented in a native DLL. The method C.MessageBoxA() is declared with the static and external modifiers, and has the DllImport attribute, which tells the compiler that the implementation comes from the user32.dll, using the default name of MessageBoxA. For more information, look at the Platform Invoke tutorial in the documentation.

  11. How do I simulate optional parameters to COM calls? -
    You must use the Missing class and pass Missing.Value
    (in System.Reflection) for any values that have optional parameters.

Share/Save/Bookmark

 

C++ networking questions

Category: C Interview Question    |    2 views    |    Add a Comment

Q: What is the difference between Stack and Queue?

A: Stack is a Last In First Out (LIFO) data structure.

Queue is a First In First Out (FIFO) data structure

Q: Write a fucntion that will reverse a string. (Microsoft)

A: char *strrev(char *s)

{

int i = 0, len = strlen(s);

char *str;

if ((str = (char *)malloc(len+1)) == NULL) /*cannot allocate memory */

err_num = 2;

return (str);

}

while(len)

str[i++]=s[–len];

str[i] = NULL;

return (str);

}

Q: What is the software Life-Cycle?

A: The software Life-Cycle are

1) Analysis and specification of the task

2) Design of the algorithms and data structures

3) Implementation (coding)

4) Testing

5) Maintenance and evolution of the system

6) Obsolescence

Q: What is the difference between a Java application and a Java applet?

A: The difference between a Java application and a Java applet is that a

Java application is a program that can be executed using the Java

interpeter, and a JAVA applet can be transfered to different networks

and executed by using a web browser (transferable to the WWW).

Q: Name 7 layers of the OSI Reference Model? (from Cisco)

A: -Application layer

-Presentation layer

-Session layer

-Transport layer

-Network layer

-Data Link layer

-Physical layer

Share/Save/Bookmark