-1

我有以下课程:

 Class A {}

 Class B: A {}

 Class C: A {}

现在,我有 2 个用数据填充 B 或 C 的函数。目前,需要 2 个函数,因为一个创建New B(),另一个创建New C().

我只想要一个可以告诉使用 B 或 C 的函数。我不能只发送一个类并告诉它被填充,被调用的函数需要能够动态创建类。

4

2 回答 2

3

您可以编写一个new对类型参数有约束的泛型函数:

class FillerOfBsAndCs {
    A Fill<T>() where T : new(), A {
        // do the preparations...
        T res = new T();
        // fill res with data
        return res;
    }
}

您现在可以像这样调用此方法:

FillerOfBsAndCs filler = new FillerOfBsAndCs();
A a1 = filler.Fill<B>();
A a2 = filler.Fill<C>();
于 2012-07-16T03:44:32.287 回答
1

您可以考虑使用通用方法

public T FillA<T>() where T : A, new()
{
    T newobj = new T();
    newobj.AProperty1 = valueForProperty1;
    newobj.AProperty2 = valueForProperty2;
    // etc.
    return newobj;
}
于 2012-07-16T03:44:33.440 回答