【问题标题】:Is it possible to make an interface method accept different classes C#?是否可以让接口方法接受不同的 C# 类?
【发布时间】:2016-06-29 16:53:40
【问题描述】:

您好,我想知道是否有任何不错的方法来实现接口方法,例如可以采用 3 种不同的模型?我正在寻找这样的东西:

 public interface IOperations 
    {
        void AddTranslation(TranslationLocationEnum Location, T model)               
    }

 public class ApplicationOne : IOperations
   {
        public void AddTranslation(TranslationLocationEnum Location, ClassType1 model)     
   }

 public class ApplicationTwo : IOperations
   {
        public void AddTranslation(TranslationLocationEnum Location, ClassType2 model)     
   }

谢谢

【问题讨论】:

  • 您可以将其设为通用 (IOperations<T>),但随后您可能会遇到使用(调用)它的问题。那个接口应该怎么用?

标签: c# generics inheritance interface


【解决方案1】:
public interface IOperations<T> where T : class
{
    void AddTranslation(TranslationLocationEnum Location, T model);
}

public class ApplicationOne : IOperations<ApplicationOne>
{
    public void AddTranslation(TranslationLocationEnum Location, ApplicationOne model)
    {
        throw new NotImplementedException();
    }
}

public class ApplicationTwo : IOperations<ApplicationTwo>
{
    public void AddTranslation(TranslationLocationEnum Location, ApplicationTwo model)
    {
        throw new NotImplementedException();
    }
}

在继承接口时使用泛型接口和传递类型。希望这会有所帮助。

【讨论】:

  • 那就是:public class ApplicationOne : IOperations&lt;ClassType1&gt;
  • @JeppeStigNielsen 是的,你可以通过任何课程。我只是举了一个例子。
  • 好的,它会像这样工作,但是如果我需要传递多种类型的模型,例如:我有一个 AddTranslationApplication1 、AddTranslationApplication2 类,还有一个 EditTranslationApp1、EditTranslationApp2 类。如果我采用这个解决方案,这意味着我必须为我理解的每个操作创建一个界面。我只想有一个添加/编辑/读取操作的接口,每个操作都接受 3x3 不同的类(我不想这样做:其中 T:类,其中 Z:类等
  • 您不需要为每个模型创建一个接口,只需使用您的 add/edit/delete 方法定义创建一个通用接口,并在继承时传递模型类型并实现 add/编辑/删除方法。随意询问是否卡在任何地方。我很乐意提供帮助。
  • 我觉得您需要存储库模式来添加更新删除。试试这个博客blog.falafel.com/…
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 2021-09-19
  • 2014-12-10
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
相关资源
最近更新 更多