目前,我正在尝试实现创建类型的系统或方法,但是在创建时还要获取类型名称。
假设我有类似的操作,可以由应用程序的用户创建:
Blur
Contrast
Sharpen
Diffuse
Invert
...
因此,当通过UI创建它们时,应该如何提取它们的名称。假设您每个都有单独的UI按钮。每次创建其中一个时,它们都必须被命名为
Blur01
,Blur02
,...。因此,当前它们具有必须在创建时设置的
.Name
属性。但是我也不想在每个类中重复代码来设置名称。我应该使用哪种设计模式?
最佳答案
如果您希望每种类型都有自己的唯一增量器,则将有重复的代码。通过将静态字典保存在具有Type和int的基类中,可以通过反射来避免这种情况,如下所示:
private static Dictionary<Type,int> nameSuffixCounters =
new Dictionary<Type,int>();
public string CreateName()
{
Type type = this.GetType();
return string.Format("{0}{1}",type.Name, this.GetNextAndIncrement(type));
}
private int GetNextAndIncrement(Type type)
{
int current;
if (!this.nameSuffixCounters.TryGetValue(type, out current))
{
current = 0;
}
nameSuffixCounters[type] = ++current;
return current;
}
像这样的东西会摆脱重复的代码,但是在基类中使用反射会增加一些复杂性……
关于c# - 解决此问题的最佳设计模式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/762103/