我试图找出创建/转换多个类的最简单方法,并在适当的子类下创建它们。
以下是我的活动类
的代码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文件,标题为第一行,值是特定行的值。
答案 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是您的子类。你需要解析并调用这种方法。