gpt4 book ai didi

c# - Class 和 Activator.CreateInstance

转载 作者:太空狗 更新时间:2023-10-29 21:24:14 25 4
gpt4 key购买 nike

这是一些类:

public class MyClass<T, C> : IMyClass where T : SomeTClass
where C : SomeCClass
{
private T t;
private C c;


public MyClass()
{
this.t= Activator.CreateInstance<T>();
this.c= Activator.CreateInstance<C>();
}
}

我正在尝试通过这样做来实例化此类的对象:

            Type type = typeof(MyClass<,>).MakeGenericType(typeOfSomeTClass, typeOfSomeCClass);
object instance = Activator.CreateInstance(type);

我得到的只是一个System.MissingMethodException(这个对象没有无参数的构造函数)...

我的代码有什么问题?

最佳答案

这听起来像 typeOfSomeTClasstypeOfSomeCClass 是一种没有公共(public)无参数构造函数的类型,如以下要求:

this.t = Activator.CreateInstance<T>();
this.c = Activator.CreateInstance<C>();

您可以通过约束来强制执行:

where T : SomeTClass, new()
where C : SomeCClass, new()

在这种情况下你也可以这样做:

this.t = new T();
this.c = new C();

关于c# - Class<T,C> 和 Activator.CreateInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com