我想使用Generic来实现可重用性。
下面列出了要应用的代码。
pubic Class Test < T >
{
T item;
...
public void set(T item)
{
this.item = item;
// if (T type == int) {...}
// if (T type == string) {...}
abc();
}
private void abc()
{
...
}
}
问题1。我听说使用属性是这种情况下的最佳解决方案。 我该如何实现?如果你有任何例子,请告诉我。 (将不断添加类型)
问题2。关于上面的例子使用Generic最佳解决方案??
感谢。
答案 0 :(得分:4)
您应该避免检查泛型方法和类中的特定类型。您可以使set
成为模板方法,然后覆盖子类中指定类型T
的类型特定行为,例如。
public class Test<T> {
public void Set(T item) {
this.item = item;
this.OnSet(item);
abc();
}
protected virtual void OnSet(T item) { }
}
public class IntTest : Test<int> {
protected override void OnSet(int item) { ... }
}
public class StringTest : Test<string> {
protected override void OnSet(string item) { ... }
}
答案 1 :(得分:1)
我认为您正在寻找:
if(item is int)else if(item is string)...
无论它是否是最佳方法,我都会留给其他人。