В настоящее время у меня есть метод, который пытается выяснить, что obj получает. Он знает, что на определенном интерфейсе, например IService, но у меня есть код, который смотрит на него и пытается сказать мне, что это, например, Service1 или Service2. Я в настоящее время много примеров if (obj isObj), что было бы лучшим решением, чтобы сделать этот код довольно?
вот пример того, что у меня есть:
public void DoSomething(IService service)
{
if (service is Service1)
{
//DO something
}
if (service is Service2)
{
//DO something else
}
}
теперь есть два isnt слишком много плохой вещи, но я смотрю на наличие, вероятно, 20+ из них, которые просто становятся ужасно использовать.
Любые идеи?
ok дальнейшие подробности, я думаю, нужны, и вот они:
до этого метода у меня есть другой метод, который получает документ xml, который он десериализует в интерфейс IService, поэтому мы имеем что-то вроде этого:
private static void Method(InnerXml)
{
var messageObj = (IServiceTask)XmlSerialization.Deserialize(typeof(IServiceTask), InnerXml);
var service = GetService(messageObj);
service.PerformTask(xmlDoc);
}
private static IService GetService(IServiceTask messageObj)
{
var service = new IService ();
if (messageObj is Task1)
{
service = (SomeService)messageObj;
}
if (messageObj is Task2)
{
service = (SomeOtherService)messageObj;
}
return service ;
}
Надеюсь, это немного упростит.