C#重复扩展类

时间:2012-07-16 03:35:09

标签: c# oop

我有以下课程:

 Class A {}

 Class B: A {}

 Class C: A {}

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

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

2 个答案:

答案 0 :(得分: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>();

答案 1 :(得分:1)

您可以考虑使用通用方法

public T FillA<T>() where T : A, new()
{
    T newobj = new T();
    newobj.AProperty1 = valueForProperty1;
    newobj.AProperty2 = valueForProperty2;
    // etc.
    return newobj;
}