将多个类转换为子类的最佳方法

时间:2015-02-02 01:05:03

标签: c# .net

我试图找出创建/转换多个类的最简单方法,并在适当的子类下创建它们。

以下是我的活动类

的代码
public class Event
{
    public Dictionary<string, string> dictionary = new Dictionary<string, string>();

    public Event(string[] headers, string[] values)
    {
        if (headers.Length != values.Length)
            throw new Exception("Length of headers does not match length of values");

        for (int i = 0; i < values.Length; i++)
            dictionary.Add(headers[i], values[i]);
    }

    public override string ToString()
    {
        return dictionary.ToString();
    }

    public string getTimeStamp()
    {
        return DateTime.Parse(dictionary["event_ts"]).ToLocalTime().ToString();
    }

    public string getKey()
    {
        return dictionary["hbase_key"];
    }

    public string getEventType()
    {
        return dictionary["event_type"];
    }

}

除此之外,我将有多个类,它们是Event Class的扩展,为不同类型的Events定义更多方法。但是,我需要一个基于EventType的简单方法来创建适当的类。例如,如果event_type = testEvent,我将需要使用我的TestEvent类。我可以在Event中放入某种方法来解析event_type并找出它应该创建的类。

我得到的所有信息都来自解析CSV文件,标题为第一行,值是特定行的值。

2 个答案:

答案 0 :(得分:0)

您可以使用反射将类类型与事件类型匹配,然后使用:

实例化它
Activator.CreateInstance(eventType) as Event

答案 1 :(得分:0)

您可以使用&#39;工厂方法&#39;。

public Event CreateEvent(string sEventType)
{
    if (sEventType.Equals("Event1"))
        return new Event1();
    if (sEventType.Equals("Event2"))
        return new Event2();
    if (sEventType.Equals("Event3"))
        return new Event3();
    //and so on...
}

Event1,Event2和Event3是您的子类。你需要解析并调用这种方法。