gpt4 book ai didi

c# - 将通用类型检查(工厂式模式)改进为更面向 SOLID?

转载 作者:行者123 更新时间:2023-11-30 12:14:17 26 4
gpt4 key购买 nike

我想知道如何更好地编写这样的代码,以便它利用更多 SOLID 原则...

public static T TransformXmlToEntity<T>(string xml) {
if(typeof(T) == typeof(EntityA)) {
return TransformXmlToEntityA(xml);
} else if (typeof(T) == typeof(EntityB)) {
return TransformXmlToEntityB(xml);
}
}

private static T TransformXmlToEntityA(string xml) {
var entityA = new EntityA();
//mapping occurs; sudo code
entityA.Person = xml.element(Person).value;
...
return entityA;
}
private static T TransformXmlToEntityB(string xml) {
var entityB = new EntityB();
//mapping occurs; sudo code
entityB.Product = xml.element(Product).value;
...

return entityB;
}

这段代码感觉不对。但我想不出如何做得更好。

最佳答案

转换图怎么样?

private static Dictionary<Type, Func<string,object>> conversionMap = new Dictionary<Type, Func<string,object>> 
{
{typeof(EntityA), TransformXmlToEntityA},
{typeof(EntityB), TransformXmlToEntityB},
// ....
}

public static T TransformXmlToEntity<T>(string xml)
{
return (T)conversionMap[typeof(T)](xml);
}

关于c# - 将通用类型检查(工厂式模式)改进为更面向 SOLID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com