时间:2010-07-25 17:48:09

标签: c# interface

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

答案 2 :(得分:0)

答案 3 :(得分:0)

答案 4 :(得分:0)

如果至少对于接口,可以声明一个类根据对象实现接口,那将是有帮助的。如果存在“接口”泛型类型约束,这将特别酷。然后,例如,可以执行类似(VB语法)

的操作
Class Foo(Of T as Interface)
  Implements T via Bar  ' Declares variable 'bar' of type T
  Sub DoSomething
    ' Does something
  End Sub
End Class

然后将一个Foo(T)投射到一个T并使其表现得像一个T.也许MS的某个人可以偶然发现这个想法并将其传递出去?

我应该注意,顺便说一下,一个类似于你的ICoolInterface的漂亮模式:

public interface ISelf<T>
{
    T Self { get;}
}
public interface IFoozle
{
  ... definitions for IFoozle
}
public interface IFoozle<T> : ISelf<T> , IFoozle;
{
  /* Empty except for above declarations */
}
... similarly define IWoozle and IWoozle<T> etc.

然后可以声明一个可以实现IWoozle和IFoozle的字段,并继承自BoozleBase(它既不实现),也可以通过:

  IWoozle<IFoozle<BoozleBase>> myField1;
or
  IFoozle<IWoozle<BoozleBase>> myField2;

请注意,上述两种类型可以相互转换,也可以转换为包含其他接口的类型。如果只需要将满足多个约束的变量传递给方法,则可以通过使用泛型方法更容易地获得这样的事物。不幸的是,没有办法在一个字段中存储一个未知类型的对象,以便它可以传递给具有多个约束的泛型函数。