本文介绍了如何重构呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图重构这个
class AClass
{
string Property1 { get; set; }
string Property2 { get; set; }
string Property3 { get; set; }
void AMethod(AClass other)
{
if(String.IsNullOrEmpty(this.Property1))
{
this.Property1 = other.Property1;
}
if(String.IsNullOrEmpty(this.Property2))
{
this.Property2 = other.Property2;
}
if(String.IsNullOrEmpty(this.Property3))
{
this.Property3 = other.Property3;
}
}
}
和我唯一能做的事拿出了
And the only thing I could come up was
private string GetFirstNotNullOrEmpty(string first, string second)
{
if (String.IsNullOrEmpty(first))
{
return second;
}
return first;
}
和
this.Property1 = GetFirstNotNullOrEmpty(this.Property1, other.Property1);
这是不是完全等同,但会完成这项工作。有没有更好的方式来重构这个?
Which is not exactly equivalent, but will do the job. Is there a better way to refactor this?
推荐答案
如果你打算该类的N个字符串属性做到这一点,您应该实现使用。
If you are going to do this for the N string properties of that class, you should implement that using Reflection.
更新
这是所有关于德codez吧?这里有云:
It's all about "teh codez", right? Here it goes:
class SomeClass
{
public string Property0 { get; set; }
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public string Property4 { get; set; }
public string Property5 { get; set; }
public string Property6 { get; set; }
public string Property7 { get; set; }
public string Property8 { get; set; }
public string Property9 { get; set; }
public override string ToString()
{
//just to print out all properties and values
foreach (PropertyInfo prop in typeof(SomeClass).GetProperties())
{
Console.WriteLine(prop.Name + "," + prop.PropertyType + " = " + prop.GetValue(this, null));
}
return base.ToString();
}
public void CopyStringPropertiesIfEmptyFrom(SomeClass SourceInstance)
{
foreach (PropertyInfo prop in typeof(SomeClass).GetProperties())
{
if (prop.PropertyType == typeof(System.String) && String.IsNullOrEmpty((string)prop.GetValue(this, null)))
{
prop.SetValue(this, prop.GetValue(SourceInstance, null), null);
}
}
}
}
这篇关于如何重构呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!