【发布时间】:2012-04-12 01:56:24
【问题描述】:
我有一个简单的接口,定义如下:
interface iFace
{
int Value { get; }
}
在这种情况下,任何实现 iFace 的类都必须有一个名为 Value 的 int 类型的属性。这个接口的使用将与数据绑定一起使用,我不在乎属性是什么类型。我有什么选择吗?我想避免这种解决方案:
interface iFace<T>
{
T Value { get; }
}
因为我想引用接口而不指定类型
编辑:
我希望能够将相同的界面应用到 NumericUpDown 控件和 Trackbar 控件。一个value属性是decimal类型,另一个是int类型。
在这种情况下,将属性设为 object 类型是行不通的。
【问题讨论】:
-
这就是 dynamic 关键字的设计目的。
-
我对 .net 3.5 和更新版本比较陌生,我将不得不研究动态。
-
@HansPassant 值得一提的是,一个dynamic属性实际上会被类型化为一个object,所以在使用接口时它会显示为这样在另一种语言中 - 并且大概是在 C# 项目中用作程序集引用时。我不知道如果跨项目使用它作为 VS 解决方案中的项目参考会发生什么;我好奇。如果我记得这样做,我会在上班时检查一下。
-
是不是写界面太费时间了?你不能为 int/double 类型编写另一个接口......如果你不想要通用接口?通用接口是解决这个问题的方法。
标签: c# .net generics types interface