类,我有以下的代码库:动态初始化实现一个通用接口
public abstract class Business
{
public BusinessType BusinessType { get; set; }
}
public class BusinessA : Business
{
public string SpecialA { get; set; }
}
public class BusinessB : Business
{
public string SpecialB { get; set; }
}
通用接口和类均实现该接口:
public interface IBusinessMapper<T>
{
void DoMapping(T business);
}
public class BusinessMapperA : IBusinessMapper<BusinessA>
{
void DoMapping(BusinessA business)
{
//...
}
}
public class BusinessMapperB : IBusinessMapper<BusinessB>
{
void DoMapping(BusinessB business)
{
//...
}
}
现在我想创建一个实例类BusinessMapperA或BusinessMapperB取决于某些值。是否有可能使用类似这样的东西?:
public class Core
{
public void Process(Business newBusiness)
{
var mapper = GetBusinessMapper(newBusiness.BusinessType);
mapper.DoMapping();
}
private IBusinessMapper<T> GetBusinessMapper(BusinessType businessType)
{
switch (businessType)
{
case BusinessType.A:
return new BusinessMapperA();
case BusinessType.B:
return new BusinessMapperB();
default:
throw new Exception("Not supported");
}
}
}