C# 从泛型列表实例化中调用中的非默认构造函数

C# 从泛型列表实例化中调用中的非默认构造函数,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

我有一个名为Fred的类,它的构造函数接受一个参数parmA,我想将它传递到名为MyList的MultiCtorClass类型的通用列表的初始化中

MultiTorClass的默认构造函数将ParmB传递给它的基;我想调用MultiCtorClass的另一个构造函数,它通过Fred的初始化传入parmA

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)};