C# 从泛型列表实例化中调用中的非默认构造函数
我有一个名为Fred的类,它的构造函数接受一个参数parmA,我想将它传递到名为MyList的MultiCtorClass类型的通用列表的初始化中 MultiTorClass的默认构造函数将ParmB传递给它的基;我想调用MultiCtorClass的另一个构造函数,它通过Fred的初始化传入parmAC# 从泛型列表实例化中调用中的非默认构造函数,c#,generics,generic-list,C#,Generics,Generic List,我有一个名为Fred的类,它的构造函数接受一个参数parmA,我想将它传递到名为MyList的MultiCtorClass类型的通用列表的初始化中 MultiTorClass的默认构造函数将ParmB传递给它的基;我想调用MultiCtorClass的另一个构造函数,它通过Fred的初始化传入parmA public class Fred { public Fred(parmType parmA) { MyList = new List<MultiCtorC
public class Fred
{
public Fred(parmType parmA)
{
MyList = new List<MultiCtorClass>();
}
public IEnumerable<MultiCtorClass> MyList { get; set; }
}
public class MultiCtorClass : MyBase
{
public MultiCtorClass()
: this(parmB)
{
}
public MultiCtorClass(parmType parm)
: base(parm)
{
}
}
公共类
{
公共Fred(parmType parmA)
{
MyList=新列表();
}
公共IEnumerable MyList{get;set;}
}
公共类MultiCtorClass:MyBase
{
公共多存储类()
:这个(parmB)
{
}
公共多存储类(parmType parm)
:基准(每平方米)
{
}
}
事实上,我正在努力做到以下几点:
public Fred(parmType parmA)
{
MyList = new List<MultiCtorClass(parmA)>();
}
public Fred(parmType parmA)
{
MyList=新列表();
}
如何实现这一点?在这两种情况下都没有调用任何构造函数-列表为空。仅在创建新项时调用构造函数,例如
MyList.Add(new MultiCtorClass(...));
您可以在那里随意选择构造函数:)无论哪种情况,您都不会调用任何构造函数-列表为空。仅在创建新项时调用构造函数,例如
MyList.Add(new MultiCtorClass(...));
您可以在那里随意选择构造函数:)查看
Reflection
以实例化列表项。但是,您不能将列表本身限制为仅使用特定ctor实例化的项。有没有理由MultiCtorParm类也不能采用泛型?@Tim Barras只有这样一个事实:这是整个系统中使用的所有遗留代码,进行此类更改将产生巨大的连锁反应。我正在寻找/希望一个简单的快速解决方案/解决方法,然后再沿着重构路线进入Reflection
实例化列表项。但是,您不能将列表本身限制为仅使用特定ctor实例化的项。有没有理由MultiCtorParm类也不能采用泛型?@Tim Barras只有这样一个事实:这是整个系统中使用的所有遗留代码,进行此类更改将产生巨大的连锁反应。我正在寻找/希望一个简单快速的解决方案/解决方法,然后再进行重构,如果你想变得更有趣的话:MyList=newlist{new MultiCtorClass(paramA)};如果你想成为一名花花公子:MyList=newlist{newmultictorclass(paramA)};