微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有一种方法可以在不定义类型的情况下使用通用类型参数声明对象?

如何解决有没有一种方法可以在不定义类型的情况下使用通用类型参数声明对象?

我有一个带有通用类型参数的抽象类,以便用户可以在子类中定义正确的功能

public abstract class Fruit<TFruit>{
    public abstract TFruit CutFruit();
    public abstract float TypeIndependentMethod();
}

外部类希望在该类中调用与类型无关的抽象方法,并且不需要知道子类的类型参数。它只想调用该类的TypeIndependentMethod()的实现:

public class FruitLabeler
{
    public Fruit fruit = null;

    public void WriteLabel(){
        float f = fruit.TypeIndependentMethod();
    }
}

问题是没有类型参数我不能声明public Fruit fruit,编译器要求我声明Fruit<Orange> fruitFruit<Apple> fruit,依此类推。但是我不希望我的{{1 }}仅适用于橘子或苹果,我希望它适用于任何水果。

如何声明FruitLabeler的实例,该实例与类型无关,或者如何称呼它为与泛型无关的方法

解决方法

如果为类型无关的方法引入IFruit接口,则可以改用IFruit fruit并在不知道类型的情况下调用方法

 public abstract class Fruit<TFruit> : IFruit{
        public abstract TFruit CutFruit();
        public abstract float TypeIndependentMethod();
    }

    public interface IFruit
    {
        public float TypeIndependentMethod();
    }

    public class FruitLabeler
    {
        public IFruit fruit = null;

        public void WriteLabel(){
            float f = fruit.TypeIndependentMethod();
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。