on initialize a class by string variable in c#?我已经找到了如何使用字符串
创建一个类所以我已经拥有的是:
Type type = Type.GetType("project.start");
var class = Activator.CreateInstance(type);
我想要做的就是在这个类上调用一个函数,例如:
class.foo();
这可能吗?如果是这样的话?
答案 0 :(得分:4)
Type yourType = Type.GetType("project.start");
object yourObject = Activator.CreateInstance(yourType);
object result = yourType.GetMethod("foo")
.Invoke(yourObject, null);
答案 1 :(得分:2)
如果您可以假设该类实现了一个公开Foo方法的接口或基类,则根据需要强制转换该类。
public interface IFoo
{
void Foo();
}
然后在你的调用代码中你可以这样做:
var yourType = Type.GetType("project.start");
var yourObject = (IFoo)Activator.CreateInstance(yourType);
yourType.Foo();
答案 2 :(得分:1)
这是可能的,但您必须使用反射或在运行时将class
转换为正确的类型..
反思示例:
type.GetMethod("foo").Invoke(class, null);
答案 3 :(得分:0)
Activator.CreateInstance
会返回object
类型。如果您在编译时知道类型,则可以使用通用CreateInstance。
Type type = Type.GetType("project.start");
var class = Activator.CreateInstance<project.start>(type);
答案 4 :(得分:0)
var methodInfo = type.GetMethod("foo");
object result = methodInfo.Invoke(class,null);
Invoke方法的第二个参数是方法参数。