我已经退缩了一下。这是我所拥有的简化版本(在C#中):

class OuterClass
{
    private class BadClass
    {
        private int Data;

        public BadClass()
        {
            Data = 0;

            ...
        }
    }

    T Build<T>(Object Input)
    {
        T x = new T();
        ...
        return x;
    }

    void SomeMethod()
    {
        BadClass a = Build<BadClass>(anObject);
        ...
    }
    ...
}


我的问题是,我现在必须根据正在创建BadClass实例的OuterClass实例更改Data的初始值。通常,我只会使用带有参数的BadClass构造函数:

public BadClass(int Data)
{
    this.Data = Data;
    ...
}


但是我在几种泛型类型中使用BadClass,所以我必须有一个无参数的BadClass构造函数。太糟糕了,我不能做这样的事情:

Build<BadClass(5)>(anObject);


因此,当我无法将参数传递给构造函数时,如何给构造函数运行时信息?
是否可以创建BadClass类型的运行时实例,为其提供所需的信息,然后在我的泛型类型中使用它?

编辑:我使用列表作为示例泛型类型,但没有完全表达我的困境的深度...
如果我使用BadClass,我可以在Build中创建一个测试来调用init函数,但这很hacky。我希望找到一种不太麻烦的方法。

最佳答案

如果需要具有多个泛型的BadClass类型,则可以通过更改继承树来实现:

class OuterClass {
    private class BadClassBase {
        // whatever BadClass does
    }
    private class BadClass : BadClassBase {
        public BadClass(T item) {
            ...
        }
    }
}


不确定这是否是您要的东西,但是您可以创建List 。

10-06 03:02