У меня есть 3 разных класса:
class A
{
public int property1;
public int property2;
// so on..
}
class B
{
public int property11;
public int property22;
//so on.
}
class Consumer
{
public int property111;
public int property222;
//so on.
}
// Business logic in other class
if (someCondition)
{
var serviceCall1 = GetValuesForClassA();
A obj = serviceCall.Response;
}
else if (someOtherCondition)
{
var serviceCall2 = GetValuesForClassB();
B obj = serviceCall2.Response;
}
После того, как я получу значения определенного типа, я назначаю его свойствам типа Consumer с помощью функции generi c, как показано ниже:
private void ApplyProperties<T>(T serviceResponse, Consumer obj)
where T: class
{
if (serviceResponse.GetType().Name == "A") // where A = class name
{
A newObj = (A)(object)serviceResponse;
//Assign properties of Consumer obj here.
}
else if(serviceResponse.GetType().Name == "B") // where B = class name
{
B newObj = (B)(object)serviceResponse;
//Assign properties of Consumer obj here.
}
}
Я последовал этому примеру. Я не понимал, как изменить код более чистым способом, отсюда и вопрос.