Reputation: 335
namespace MyNameSpace
{
public interface IMyInterface
{
string GetMethod();
}
public class MyClass : IMyInterface
{
public string GetMethod()
{}
}
}
//Main Program
var ruleClass = Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName, "MyNameSpace.MyClass");
if( ruleClass != null)
{
IMyInterface myClass = (IMyInterface)ruleClass;
//throws exception.
}
How can I convert ruleClass
to IMyInterface
type so that I can call specific methods in it?
Upvotes: 1
Views: 3754
Reputation: 1074
You can try this option as well
var typ = Type.GetType("MyNameSpace.MyClass", true);
var ruleClass = Activator.CreateInstance(typ);
if (ruleClass != null)
{
IMyInterface myClass = (IMyInterface)ruleClass;
//myClass is NULL.
}`
Upvotes: 0
Reputation: 1236
Have you tried this?
var ruleClass = Activator.CreateInstance(typeof(MyClass));
if (ruleClass != null)
{
var myClass = (IMyInterface)ruleClass;
myClass.GetMethod();
}
Upvotes: 0
Reputation: 15364
Use Unwrap
method.
IMyInterface myClass = (IMyInterface)ruleClass.Unwrap();
You can create it directly too
var myClass = Activator.CreateInstance(typeof(MyClass)) as MyClass;
Upvotes: 5