[英]What's with instantiating from a type parameter T not allowing constructor aguments?
如果我有课程:
class Useless
{
private string _message ;
public Useless(string message)
{
_message = message;
}
}
class UselessFactory<T> where T : new()
{
public Useless CreateUseless(string msg)
{
return new T(msg);
}
}
为什么我不能用参数实例化T,就像我可以用下面这样做?
return (Useless)Activator.CreateInstance(typeof(T), msg);
新约束指定泛型类声明中的任何类型参数都必须具有公共无参数构造函数。
来自文档
可能的解决方法(不一样)
如果您将Message
设为public和mutable属性,则可以执行以下操作:
class UselessFactory<T> where T : UselessBase, new()
{
public T CreateUseless(string msg)
{
return new T() { Message = msg };
}
}
您可以执行以下操作:
return (T)Activator.CreateInstance(typeof(T), new object[] { msg });
我从这个问题得到了它: https : //stackoverflow.com/a/731637/1522991
目前根本不支持它。
有工作:
Func<string, T>
)。 您可以调用此委托,该委托将使用给定参数构造实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.