如何使用泛型来实现代码的可重用性

时间:2016-01-07 10:18:28

标签: c#

我想使用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最佳解决方案??

感谢。

2 个答案:

答案 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)...

无论它是否是最佳方法,我都会留给其他人。