Tag: 界面

方法返回一个接口

大家好, 我正在考虑这行代码 IDataReader myReader = questDatabase.ExecuteReader(getQuest); 我正在使用DAAB,但我无法理解方法ExecuteReader(DbCommand)返回IDataReader接口的意义和含义是什么。 任何人都可以解释,拜托

如何将接口方法的返回类型定义为另一个接口?

我是接口和抽象类的新手。 我想创建几个接口来定义购物车系统对象的核心方法和变量。 然后我想创建实现核心function的抽象类。 这个想法是,其他类可以以不同的方式用于不同的项目。 这是我的(简化)界面: public interface ICart { … List CartItems { get; set; } } public interface ICartItem { int ProductId { get; set; } int Quantity { get; set; } } 这是我的抽象Cart类(再次,只显示相关的行)实现ICart: public abstract class Cart : ICart { private List _cartItems = new List(); public List CartItems { get { return […]

了解接口

我仍然无法理解哪些接口有益。 我阅读了一些教程,但我仍然不知道它们对于其他什么是“他们让你的课程保持承诺”和“他们帮助多重inheritance”。 多数民众赞成。 我还不知道什么时候甚至可以在实际工作示例中使用界面,甚至何时确定何时使用它。 根据我对接口的有限知识,他们可以提供帮助,因为如果某些东西实现了它,那么你可以通过接口允许传入类似不同的类,而不必担心它不是正确的参数。 但是我从来不知道真正的意义是什么,因为他们通常在这一点上停止显示代码在通过界面后会做什么,如果他们这样做,似乎他们没有做任何有用的事情,我可以看看并开始“哇,他们会帮助一个现实世界的例子”。 所以我想我要说的是,我正在努力寻找一个真实世界的例子,我可以看到界面在行动。 我也不明白你可以做像这样的对象的引用: ICalculator myInterface = new JustSomeClass(); 所以现在如果我去myInterface点和intellisense会拉起来我只会看到接口方法而不是JustSomeClass中的其他方法。 所以我还没有看到这一点。 我也开始进行unit testing,他们似乎喜欢使用接口,但我仍然不明白为什么。 比如这个例子: public AuthenticationController(IFormsAuthentication formsAuth) { FormsAuth = formsAuth ?? new FormsAuthenticationWrapper(); } public class FormsAuthenticationWrapper : IFormsAuthentication { public void SetAuthCookie(string userName, bool createPersistentCookie) { FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); } public void SignOut() { FormsAuthentication.SignOut(); } } public IFormsAuthentication FormsAuth […]

是否可以定义无法实现的有效C#接口?

我已经考虑了这个(meta)问题几天了: 是否有可能定义有效的C#接口,无法以任何方式实现? 这个问题的可能变化:是否可以在C#2.0,3.0,4.0,5.0中定义这样的接口? 是否有可能定义在实现时甚至不编译的接口,或者可以编译但抛出运行时exception的接口? 编辑 :我知道这样的界面只是按照定义无用,但对于编程工作的演讲或测试申请人来说,他们对C#的了解有多好,这是一个很好的答案。

在C#中使用不同的参数定义接口方法

interface parentInterface { public String methodA(/*define parameters name and dataType*/); } 和 public class childA : parentInterface { public String methodA(String a, int b, String c, long d){} } public class childB : parentInterface { public String methodA(int e, String f, String g){} } 我想定义接口方法的参数名称和数据类型

嵌套接口:将IDictionary <TKey,IList >转换为IDictionary <TKey,IEnumerable >?

我认为将IDictionary<TKey, IList>对象转换为IDictionary<TKey, IEnumerable>是相当简单的,但是 var val = (IDictionary<TKey, IEnumerable>)Value; 抛出System.InvalidCastException ,和 var val = Value as IDictionary<TKey, IEnumerable>; 使val null。 投这个的正确方法是什么?

在C#中,接口是否可以实例化?

我在这里读代码。 我发现private ITreeModel _model; 在TreeList.cs中: namespace Aga.Controls.Tree { public class TreeList: ListView { #region Properties //… private ITreeModel _model; public ITreeModel Model { //… } //… } } ITreeModel是ITreeModel.cs中的一个接口: namespace Aga.Controls.Tree { public interface ITreeModel { /// /// Get list of children of the specified parent /// IEnumerable GetChildren(object parent); /// /// returns wheather specified […]

测试对象是否为任何generics类型实现通用接口

我想测试一个对象,看它是否实现了IDictionary但我不关心TKey和TValue是什么。 我可以测试是否是框架Dictionary的具体实例Dictionary如下所示: bool isDict = type.IsGenericType && (typeof(Dictionary).IsAssignableFrom(type.GetGenericTypeDefinition()); 但我想不出一种方法来测试实现IDictionary东西。 这种技术不适用于界面; 如果我对通用基类型IDictionary测试,则IsAssignableFrom返回false,这看起来很奇怪,因为它适用于具体类型。 通常你会使用is来测试某些东西是否实现了一个接口,当然这只有在我想测试一个特定的通用接口时才有效。 或者我只测试一个共同的祖先接口,但与其他通用数据结构(如IList和ICollection ,没有唯一的非generics接口,genericsIDictionaryinheritance该接口。

在实现具有对象类型属性的接口的类中更改属性类型

我正在编写一个TemplateEngine,它允许我在基于文本的文件中使用自己的标记。 我想在应用程序成熟时添加控件作为插件。 目前我有一个如下结构: interface IControl string Id object Value class Label : IControl string Id string Value class Repeater : IControl string Id List Value 现在,您将使用Value属性立即在Repeater类中看到奇怪的部分。 我希望在界面中使用Value类型作为对象将允许我灵活地扩展控件,因为我继续。 编译器不喜欢这个,我猜是有充分理由的。 结论:我正在尝试让所有控件类实现相同的接口,但Value属性具有不同的类型。 有没有人有任何建议如何实现这一目标? 注意:请不要建议使用Spark View Engine进行模板化。 我有理由为自己创造额外的工作。

在C#中定义Windows API接口时,是否必须定义所有成员? 我可以只定义我要使用的方法吗?

例如,这是从Pinvoke站点获取的IFileOpenDialog接口的完整定义,即Windows Shell接口: [ComImport, Guid ( “d57c7288-d4ad-4768-be02-9d969532d960” ), InterfaceType ( ComInterfaceType.InterfaceIsIUnknown )] interface IFileOpenDialog : IFileDialog { // Defined on IModalWindow – repeated here due to requirements of COM interop layer // ——————————————————————————– [MethodImpl ( MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime ), PreserveSig] int Show ( [In] IntPtr parent ); // Defined on IFileDialog – repeated here due […]