Tag: 界面

如何通过保留方法名来扩展接口?

给出两个接口: interface I1 { int Foo(); } interface I2 { void Foo(); } 一堂课: class Test : I1, I2 { int I1.Foo() { Console.WriteLine(“I1.Foo”); return default(int); } public void Foo() { Console.WriteLine(“I2.Foo”); } } 如何通过保持名为Foo的方法将接口I2扩展为I1 ? 我尝试了以下代码,但它没有编译: interface I1 { int Foo(); } interface I2 : I1 { void I2.Foo(); } class Test : I2 […]

如何防止在更新接口后更新所有实现类?

我们有一个WPF应用程序,主要是图表应用程序。 大约有30个图表。 每个图表在数据库中都有自己的表,该数据库包含图表的配置信息。 每个图表在应用程序中都有一个类,其中包含与图表相关的配置信息。 我们的应用程序( IChartConfiguration )中有一个接口,每个图表配置类都实现了该接口。 它允许应用程序以一致和类似的方式使用任何特定的图表配置。 我们遇到的“问题”是每次我们需要向接口添加属性时,对于添加了我们尚未处理的新配置属性的新图表,我们必须返回到每个图表配置类,还没有实现这个新属性(通常是大多数)并添加它。 满足接口实现。 这不是一个巨大的负担,但在我看来,必须有一个更好的方法来解决这个问题。 有没有更好的方法来处理这个?

如何在VB.NET中使用隐式实现创建接口

在C#中,我可以创建一个接口,当我使用该接口时,编译器知道基类满足了某些接口要求。 通过一个例子可能更清楚: interface FormInterface { void Hide(); void Show(); void SetupForm(); } public partial class Form1 : Form, FormInterface { public Form1() { InitializeComponent(); } public void SetupForm() { } } 编译器知道Hide()和Show()是在Form中实现的,上面的代码编译得很好。 我无法弄清楚如何在VB.NET中这样做。 当我尝试: Public Interface FormInterface Sub Hide() Sub Show() Sub SetupForm() End Interface Public Class Form1 Inherits System.Windows.Forms.Form Implements FormInterface Public Sub SetupForm() […]

如果要求List ,为什么我不能返回List ?

我理解,如果S是T的子类,则List 不是 List 。 精细。 但是接口有不同的范例:如果Foo实现了IFoo ,那么为什么List不是(一个例子) List ? 因为可能没有实际的类IFoo ,这是否意味着我在暴露List时总是必须List列表中的每个元素? 或者这只是糟糕的设计,我必须定义我自己的集合类ListOfIFoos才能使用它们? 对我来说似乎都不合理…… 考虑到我正在尝试编程接口,那么暴露这样一个列表的最佳方式是什么? 我目前正倾向于将List内部存储为List 。

使用标记为“内部”的外部程序集的接口(C#)

我想实现一个驻留在外部程序集中的接口。 但是,该特定接口已标记为“内部”。 有没有办法我仍然可以为我自己的类实现这个接口? 我知道如何在C#中使用reflection调用私有/内部方法,所以我想在这种情况下也应该使用reflection。 但是,我不知道怎么做。 是的,我知道使用内部/私人内容通常是不明智的,但在这种情况下我看不到其他解决方案。 更新:我无法以任何方式编辑/更改外部组件。 它应该保持不变。

传递接口而不是对象实例

以SqlBulkCopy.WriteToServer()方法为例。 其中一个重载采用IDataReader作为参数。 我的问题是,将接口传递给方法而不是对象实例本身有什么好处/好处? http://msdn.microsoft.com/en-us/library/434atets.aspx

通用方法中的Cast接口

我是界面的新用户。 我的问题是我创建了一个Generic类,它有两个参数,一个是对象类型,另一个是接口类型。 现在在类中我可以使用Reflection来转换对象,但我没有获得构建接口的方法。

如何将“Dictionary ”作为Dictionary “传递?

C#和Stackoverflow都是新手……请随时注明是否应该以不同的方式或其他地方提出要求。 鉴于: public interface IPoint {…} public struct DeliveryPoint : IPoint {…} 和生成具有大量交付点的字典的代码: … Dictionary dict = new Dictionary(); … 现在需要将这些点传递给需要接口类型的例程: public void doSomething( Dictionary dict ) { …} 以为我能做的事情如下: doSomething( dict ); 我发现的唯一解决方案是创建一个新的List并复制所有的点,这些点似乎首先破坏了实现接口的整个目的。 有更好的方法吗?

引用C#中的inheritance

我有以下问题: 我在ProjectA.dll中有接口IA ,在ProjectB.dll中有IB ( IBinheritanceIA )。 当我尝试在任何其他项目中实现IB ,两个引用都是必需的。 嗯,预计需要在ProjectB.dll上引用,但我有点困惑,也需要ProjectA.dll上的引用。 有人知道这个function是如何调用的,我在哪里可以找到有关此行为的详细信息?

C#如何在运行时动态生成实现不同接口的对象?

我正在研究如何解决问题,我甚至不确定这在C#和.NET 3.5中是否可行: 假设我的接口数量有限,每个接口都描述一组特定的,不相关的方法。 现在我有许多实际设备,每个设备可能只实现这些接口的一个子集。 在使用这些设备建立通信期间,他们会告诉我他们拥有哪些function。 我现在想创建一个实现接口的对象(每个接口类似于设备的一个function),以便在我的应用程序架构中更高,我能够: 针对上述接口编写代码 测试该生成的对象是否实现某个接口以查看是否支持某些操作 我根本不确定使用哪种方法解决这个问题。 任何评论或方法最受欢迎!