How to determine if a type implements an interface with C# reflection

You have a few choices: typeof(IMyInterface).IsAssignableFrom(typeof(MyType)) typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface)) With C# 6 you can use typeof(MyType).GetInterface(nameof(IMyInterface)) != null For a generic interface, itโ€™s a bit different. typeof(MyType).GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IMyInterface<>))

How to get the list of properties of a class?

Reflection; for an instance: obj.GetType().GetProperties(); for a type: typeof(Foo).GetProperties(); for example: class Foo { public int A {get;set;} public string B {get;set;} } … Foo foo = new Foo {A = 1, B = “abc”}; foreach(var prop in foo.GetType().GetProperties()) { Console.WriteLine(“{0}={1}”, prop.Name, prop.GetValue(foo, null)); } Following feedback… To get the value of static properties, pass … Read more

How do I invoke a Java method when given the method name as a string?

Coding from the hip, it would be something like: java.lang.reflect.Method method; try { method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..); } catch (SecurityException e) { … } catch (NoSuchMethodException e) { … } The parameters identify the very specific method you need (if there are several overloaded available, if the method has no arguments, only give … Read more

How to create a new object instance from a Type

The Activator class within the root System namespace is pretty powerful. There are a lot of overloads for passing parameters to the constructor and such. Check out the documentation at: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx or (new path) https://docs.microsoft.com/en-us/dotnet/api/system.activator.createinstance Here are some simple examples: ObjectType instance = (ObjectType)Activator.CreateInstance(objectType); ObjectType instance = (ObjectType)Activator.CreateInstance(“MyAssembly”,”MyNamespace.ObjectType”);

How do I get the path of the assembly the code is in?

Note: Assembly.CodeBase is deprecated in .NET Core/.NET 5+: https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.codebase?view=net-5.0 Original answer: I’ve defined the following property as we use this often in unit testing. public static string AssemblyDirectory { get { string codeBase = Assembly.GetExecutingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); return Path.GetDirectoryName(path); } } The Assembly.Location property sometimes gives you some … Read more

How to create a generic array in Java?

I have to ask a question in return: is your GenSet “checked” or “unchecked”? What does that mean? Checked: strong typing. GenSet knows explicitly what type of objects it contains (i.e. its constructor was explicitly called with a Class<E> argument, and methods will throw an exception when they are passed arguments that are not of … Read more

How do I use reflection to call a generic method?

You need to use reflection to get the method to start with, then “construct” it by supplying type arguments with MakeGenericMethod: MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod)); MethodInfo generic = method.MakeGenericMethod(myType); generic.Invoke(this, null); For a static method, pass null as the first argument to Invoke. That’s nothing to do with generic methods – it’s just normal reflection. … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)