Tag: 界面

具有“具有属性X”约束的generics函数?

我有一个第三方闭源应用程序,它导出一个COM接口,我通过Interop在我的C#.NET应用程序中使用它。 此COM接口导出许多对象,这些对象都显示为System.Object,直到我将它们转换为适当的接口类型。 我想分配所有这些对象的属性。 从而: foreach (object x in BigComInterface.Chickens) { (x as Chicken).attribute = value; } foreach (object x in BigComInterface.Ducks) { (x as Duck).attribute = value; } 但是分配属性很可能(由于特定于应用程序的原因,不可避免)抛出我想要恢复的exception,所以我真的想要一个try / catch。 从而: foreach (object x in BigComInterface.Chickens) { try { (x as Chicken).attribute = value; } catch (Exception ex) { // handle… } } foreach […]

LINQ使用接口对抗两个不同的数据上下文

这是我在这里提出的问题的延续。 简介:我有两个不同的数据库,只有很少的更改(一个表中缺少一个表和外键),我希望我的导入实用程序使用Linq-To-Sql能够使用数据填充这两个数据库,而不会重复逻辑。 我的第一种方法是在单个变量中使用dynamic存储两个不同的数据库上下文,但这种方法不起作用,我建议使用接口来实现此目的。 现在我碰到了以下问题: 我正确地从我的db上下文类中提取了接口: public interface IDataContext { System.Data.Linq.Table FieldCollections { get; } System.Data.Linq.Table Fields { get; } } …但是为了能够通过两个不同的数据库上下文类实现接口,我不得不用实际的LINQ类( FieldCollection , Field )替换接口。 现在我在我的类实现中返回Table或Table遇到问题。 db上下文类的自动生成代码如下: public System.Data.Linq.Table FieldCollections { get { return this.GetTable(); } } 所以,为了在这里实现IDataContext ,我需要将返回值更改为Table 。 如何在我的属性getter Table Table为Table 而不从数据库中检索完整的表 ?

实现接口的好处

在C#3.5中实现接口有什么好处?

将接口添加到分部类

我有一个由第三方工具生成的类: public partial class CloudDataContext : DbContext { // …SNIPPED… public DbSet Users { get; set; } } 我创建一个分部类,然后分配一个接口,以便我可以在以后注入这个类: public partial class CloudDataContext : IDataContext { } IDataContext具有单个属性Users 。 这不会编译,编译器抱怨接口没有实现。 如果我将接口移动到生成的类,它可以正常工作。 因为它是生成的代码,所以我不能这样做。 如何将接口应用于部分类以公开上面定义的类?

为什么ArrayList实现IList,ICollection,IEnumerable?

ArrayList声明它实现了IList , ICollection和IEnumeralbe接口。 为什么不实现IList ,因为IList也是从ICollection派生的,而ICollection是从IEnumerable派生的。 这种宣言的目的是什么? 在.NET BCL中有很多这样的情况。

为什么接口成员没有访问修饰符?

可能重复: 为什么我不能拥有受保护的接口成员? 作为标题,在C#中。 是否有人可能想要拥有受保护或内部接口?

接口的意义C#

我想知道Interface的重要用途。 我已经阅读了很多文章,但没有清楚地了解界面的概念。 我写了一个小程序。 我已经定义了接口Itest.Class(Manager)已经实现了Interface.Another class(Employee)还没有实现接口。 但是在类( Employee )的接口中定义了相同的方法( DoSomething() )。 我可以从类对象中调用该方法。 那我为什么要去实现接口呢? 我可以在类中直接实现该方法并调用该方法。 为什么我要在接口中执行额外的步骤,然后按类inheritance接口。 我知道接口支持多重inheritance,但在这个例子中我没有使用多重inheritance。 感谢您的任何想法或意见。 public interface Itest { void DoSomething(); } public class Manager:Itest { public void DoSomething() { Console.WriteLine(“test….”); } } class Employee { public void DoSomething() { Console.WriteLine(“test….”); } } class Program { static void Main(string[] args) { Manager m = […]

接口作为返回类型

接口可以是函数的返回类型。 如果是,那么最大的优势。 例如,以下代码更正在返回接口数组的位置。 public interface Interface { int Type { get; } string Name { get; } } public override Interface[] ShowValue(int a) { . . }

为C#接口定义隐式和显式转换

有没有办法在C#中编写基于接口的代码(即使用接口而不是类作为接受和传递的类型)而不放弃使用隐式转换等内容? 这里有一些示例代码 – 已经删除了很多,但这些是相关的部分。 public class Game { public class VariantInfo { public string Language { get; set; } public string Variant { get; set; } } } 在ScrDictionary.cs中,我们有…… public class ScrDictionary: IScrDictionary { public string Language { get; set; } public string Variant { get; set; } public static implicit operator Game.VariantInfo(ScrDictionary s) { […]

如何列出省略属性访问器的接口方法

我想使用reflection来显示接口中的方法列表。 public interface IRoadVehicle { int WheelCount { get; } bool IsEmergency(); } 我使用以下代码: foreach (var m in typeof(IRoadVehicle).GetMethods()) { Console.WriteLine(m.Name); } 但是,如果接口具有属性,我还会列出编译器生成的属性访问器。 我想区分显式定义的方法和属性访问器以省略后者。 //output: //get_WheelCount //IsEmergency //desired output: //IsEmergency 如何过滤掉与属性相关的方法?