标签: interface

接口 - 这有多大功能?

这是一个非常基本的OO问题,但我很好奇我是否已经过火了.

让我们假设以下层次结构,这是我通常会创建的示例:

IVehicle
  - IFlyable
      - IPlane
          - Plane
      - IHelicopter
          - Helicopter
  - IDrivable
      - ICar
          - Car
      - ITruck
          - Truck
Run Code Online (Sandbox Code Playgroud)

是接口IPlane,IHelicopter,ICar,和ITruck必要,否则应的类直接实现IFlyable和IDriveable?我正在寻找"最佳oo做法"的答案.

oop interface class

0
推荐指数
1
解决办法
520
查看次数

覆盖变量或强制使用?

我想强制一个类从它实现的类中定义一个特定的变量.例如

class Fruit{
     String name; // Cause each fruit has a name
}

//Apple wants to get an error if it does not use the name variable
class Apple implements Fruit {
     String name = "Apple";
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?就像java.io.Serializable一样吗?

java variables interface

0
推荐指数
1
解决办法
4002
查看次数

从不实现它们的类访问接口?

我有一个接口,IFindable由几个类实现.另一个World班有一个List<IFindable> items;

我在我的World类中设置了一个getItems方法,以返回IFindables列表.现在,我试图从我的Default.aspx.cs班级访问该列表(这是一个Web项目).不幸的是,我似乎无法,因为这个类不明白IFindable是什么.我收到以下错误:

Inconsistent accessibility: return type
'System.Collections.Generic.List<IFindable>' is less accessible than
method 'World.getItems()'
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我错了吗?

c# asp.net interface

0
推荐指数
1
解决办法
261
查看次数

C#3.0中的新集合接口

C#3.0中有哪些新的集合接口?

在C#2.0中

的IComparer

的IEqualityComparer

IEnumerator的

IEnumerable的

ICollection的

IDictionary的

IDictionaryEnumerator

IList的.

c# collections interface

0
推荐指数
1
解决办法
634
查看次数

通过界面公开收集

我是C#的新手.我想知道使用Collections的不同之处.我怀疑,之前可能会问以下问题(如果这样,请告诉我链接).

有什么区别

IList<int> intCollection = new List<int>();
Run Code Online (Sandbox Code Playgroud)

和

List<int> intCollection = new List<int>();
Run Code Online (Sandbox Code Playgroud)
  1. 为什么我应该通过界面公开我的收藏.
  2. 选择第一种方法只是合成糖吗?
  3. 如果我想使用后一种方法,我将面临哪些不利之处?
  4. 如果相应的接口退出,应该使用相应的接口间接初始化所有集合类吗?
  5. 请告诉我通过界面公开集合的例子的好处.

c# collections interface

0
推荐指数
1
解决办法
489
查看次数

Java泛型的未知问题

我试图在Java中第一次使用泛型类型,因为我只希望我的构造函数接受实现"Anealable"接口的类.由于我得到的唯一错误,我的代码出现问题是"类型的非法启动",试图使其工作并没有走得太远

这是我班级的代码

package simulated_anealing;

public class Crystal extends Thread {

    Object a;

    public  Crystal(<? implements Anealable> a)
    {
        this.a = a;
    }

}
Run Code Online (Sandbox Code Playgroud)

java generics interface

0
推荐指数
1
解决办法
179
查看次数

获取NHibernate以生成HiLo字符串ID

我们有一个庞大的系统通过Unity与其数据源(Navision)松散绑定 - 我们有机会将其交换出来并拥有自己的数据库.

所以我们已经浏览了一下,并且非常喜欢Fluent NHibernate的外观 - 我们试图获得概念验证并交换掉一些服务.

我们想要使用NHibernates HiLo算法 - 不幸的是我们从Navision继承了字符串ID,它的ID是前缀(例如COL00001),所以要匹配我们需要使用字符串Id的接口.

有谁知道我会怎么样......

Id(x => x.ID).GeneratedBy.HiLo("100");
Run Code Online (Sandbox Code Playgroud)

在ID是字符串的地方工作?我们目前正在获取Identity必须是int,long等

谢谢,

安迪

------更新------

我在文章建议中尝试了这个例子但是这个功能已经从Fluent NHibernate的更高版本中删除了 - 但是有一个.Custom - 但我似乎无法让它工作!

public class ManufacturerMap : ClassMap<Manufacturer>
{
    public ManufacturerMap()
    {
        Id(x => x.ID).GeneratedBy.Custom(typeof(StringTableHiLoGenerator));
        Map(x => x.Name);
    }
}


public class StringTableHiLoGenerator : TableHiLoGenerator
{
    public override object Generate(ISessionImplementor session, object obj)
    {
        return base.Generate(session, obj).ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# nhibernate interface fluent-nhibernate loose-coupling

0
推荐指数
1
解决办法
2319
查看次数

Java:如何创建一个只能接受作为接口的对象的函数?

我需要编写一个接受一个对象的函数,但是我希望在函数调用中强制执行(不是在函数调用之后)该对象是一个接口.

意思是,我想确保在编译时这是一个接口,而不是在运行时.

我的意思是什么?

interface ISomething {...} 
class A implements ISomething { ... }
ISomething something = new A(); 
MyClass.register(something);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,传递的对象是一个接口,我希望MyClass.register函数在它的声明中强制执行这个要求.

我不知道我将获得哪个接口,并且没有定义另一个接口由所有其他实现实现,因为我需要真正的接口.

java interface

0
推荐指数
2
解决办法
525
查看次数

任何人都可以在C#界面中使用静态方法吗?

我想实现一个集合,其项目需要进行空虚测试.在引用类型的情况下,将测试为null.对于值类型,必须实现空测试,并且可能选择表示空白的特定值.

我的T的一般集合应该是两个值和参考类型值可用(意味着Coll<MyCalss>和Coll<int>都应该是可能的).但我必须以不同方式测试引用和值类型.

拥有一个实现IsEmpty()方法的接口,从我的泛型类型中排除这个逻辑,这不是很好吗?但是,当然,这个IsEmpty()方法不能是成员函数:它无法在空对象上调用.

我找到的一个解决方法是将收集项目存储为对象,而不是Ts,但它让我头疼(围绕拳击和强类型).在旧的C++中没有问题:-)

下面的代码演示了我想要实现的目标:

using System;
using System.Collections.Generic;

namespace StaticMethodInInterfaceDemo
{
  public interface IEmpty<T>
  {
    static T GetEmpty();  // or static T Empty;

    static bool IsEmpty(T ItemToTest);
  }


  public class Coll<T> where T : IEmpty<T>
  {
    protected T[] Items;

    protected int Count;


    public Coll(int Capacity)
    {
      this.Items = new T[Capacity];
      this.Count = 0;
    }

    public void Remove(T ItemToRemove)
    {
      int Index = Find(ItemToRemove);

      // Problem spot 1: This throws a compiler error: "Cannot convert null …
Run Code Online (Sandbox Code Playgroud)

c# methods static interface

0
推荐指数
1
解决办法
770
查看次数

接口和其他依赖项应该放在哪里?

通过其他依赖,我的意思是抽象类,以及其他任何东西.

我有一个形式的一个项目dll,其需要一定的interface,IInput.测试项目也需要这个接口,所以我将这个接口放在我的主项目中,而后者又是一个单独的exe程序集.

这是因为当我将所有内容连接在一起时,最终主项目将需要使用此接口.现在我遇到的问题是当我尝试将主项目中的引用添加到dll时引用了主项目我收到了循环依赖.

我以前从未遇到过这个问题,也不知道对付它的最佳方法.作为一个临时修复我已经将界面移动到单独的dll,但很快我将在主项目中需要它,所以我回到了第一个方块.

编辑:

我应该提到设计,所以这里.

Menu
Menu Tests
Runner
Run Code Online (Sandbox Code Playgroud)

菜单具有IInput,它实际上是第三方库的接口适配器,以便进行单元测试.

所以菜单需要输入,但跑步者也是如此.转轮项目(exe)将需要输入,所以我将再次需要IInput.

c# interface

0
推荐指数
1
解决办法
309
查看次数