我目前正在研究通用类。在传递不同类型时,我想将某些方法的可访问性限制为。假设它看起来像这样:
public class MyGeneric<T>
{
public void Foo1(){}
public void Foo2(){}
}
我显然可以使用typeof
运算符来实现不同的行为,但可以说Foo1计算了一些数字的平均值。如果我输入“学生”类型,则可以计算平均成绩。但是,假设我通过了“汽车”,但我不希望它做任何事情。只在那儿放而对这种类型什么也不做将是多余的。有没有办法完全限制对它的访问?谢谢!
答案 0 :(得分:1)
您可以为此使用抽象/继承。 创建一个类
public class MyGeneric<T>
{
public void Foo1(){}
}
处理所有“全局”函数,然后创建一个子类,如下所示:
public class MyGenericChild<T> : MyGeneric<T> where T : IMyInterface
{
public void Foo2(){}
}
然后可以使用特定的子代来处理特定于类型的方法。 如果需要,可以使用工厂模式扩展它以检索正确的泛型类。