只允许特定的类实现接口

是否有可能只允许一些特定的类来实现的iterface? 比方说,我创建的接口IMyInterface ,我想只有从派生的类UserControl有执行我的接口的能力。 这可能吗?

--------------解决方案-------------

这听起来像你想这样的事情,而不是:

abstract class IMyInterface : UserControl { }

当然IMyInterface不再是一个合适的名字,但是,从派生的任何类IMyInterface也将派生自UserControl ,这将满足您的要求。

这不可能。 如果你能看到的界面,可以实现它。

没有,没有限制到特定类型的接口的实施方式。 为什么需要? 为什么一个抽象的护理有关的具体类型消费者认为实施合同吗? 什么是您的使用情况?

您所描述的情况下,似乎符合了“在您的父类的抽象方法”(这里用户控件),除非接口已经存在用于其他目的。

如果没有默认的身体,推导类必须提供一个行为。

你不能,但可以实现通过添加控件属性到你的界面类似的东西,并通过会展让所有的实现返回this 。 不解决问题,反而使得实施觉得有点天气界面真正属于这里。 还允许接口的用户无需检索铸造一个类型安全的方式控制。

interface IMyInterface
{
void Foo();
UserControl Control { get; }
}

class MyControl : UserControl, IMyInterface
{
public void Foo()
{
// TODO: Write code here
}

UserControl IMyInterface.Control
{
get { return this; }
}
}

UPDATE

也有另一种解决方案 - 制作泛型方法。 接口本身不会受到限制,但该方法的操作会。 例如,下面的方法要求它的参数都继承了UserControl并实现IMyInterface

void Bar<T>(T item)
where T : UserControl, IMyInterface
{
item.Width = 120; // user control property
item.Foo(); // IMyInterface method
}

分类:C# 时间:2012-01-01 人气:2
本文关键词: 继承,接口
分享到:

相关文章

  • ASP.NET MVC 3的HtmlHelper异常不承认ModelMetadata继承接口 2012-07-08

    升级到MVC 3 RTM后,我得到它以前工作异常. 下面是这种情况. 我有使用相同的底层接口IActivity和IOwned多个对象. IActivity implements IOwned (another interface) public interface IActivity:IOwned {...} public interface IOwned { int? AuthorId {get;set;} } 我有一个使用IActivity从其他具体谐音重用的局部视图. 这里是活动部分的定义

  • 继承+接口的问题 2012-01-18

    我必须说明,当一个类可以创建一个"下一个"版本本身的界面: public interface Prototypeable<Type extends Prototypeable<Type>> { public Type basePrototype(); // the zeroth raw instance of Type public Type nextPrototype(); // the next instance of Type } 要与所用 public

  • 通过继承接口的实现 2012-02-08

    我已被实施了规定的方括号操作员的接口. 从这个继承的类实现它. 但是,它也从词典<>,其中该相同的运营商实现继承: public interface IFoo { IBar this[String tFooName] { get; } } [Serializable] public class ConcreteFoo: Dictionary<String, Bar>, IFoo { // Implement interface by calling the dictionary p

  • “重命名”继承接口在C#中的方法 2012-03-03

    我想了解的Repository Pattern ,而开发一个ASP.NET MVC应用程序(使用.NET 3.5,ASP.NET MVC 1.0和实体框架). 我已经得到了足够远,以获得依赖注入和所有与一个控制器和一个实体类型的工作,但现在我已经尽可能实施针对不同类型之间的关系得到了支持,而我被困. 在我见过的所有示例中,库接口被称为像IContactsRepository并包含所关注的(CRUD)方法Contact的项目. 我想要实现的分组Contacts ,让我有所谓的实体型Group ,以

  • C#什么是确定继承接口的类的类型的最佳途径? 2012-03-09

    在我的应用程序与审核规定工作. 我有一个基本的标准接口,谁从这个基地接口继承其它接口: 的ICriteria | | ---------------------- | | ITextCriteria IChoices 我想知道的是,什么是知道什么类型的类是最好的方式? 在我的代码我有一个下拉框,然后根据我必须确定类型: // Get selected criteria var selectedCriteria = cmbType.SelectedItem as ICriteria; if (se

  • ninject继承接口 2012-07-25

    我有如下两个基本接口,一个继承了其他. 我为他们的结合实现如下.. public interface IUnitOfWork { } public interface IEventStoreUnitOfWork : IUnitOfWork { } public class TransactionalHandler<TCommand, TCommandHandler> { public TransactionalHandler(IUnitOfWork unitOfWork) { // remov

  • 复杂的继承接口原BUF .NET序列化 2014-02-08

    我想序列化而做的实现多个接口从同一个基接口继承的一些类. 目前我使用的BinaryFormatter,但我喜欢使用原BUF .NET. 但我认为我目前将面临类似这样描述问题的问题:如何序列化一个类实现了谁相同的基于两个接口界面 唯一可能的解决方案我目前想到的是在我班的包装而序列化,我用它来创建复杂的我班简单的数据类. 让我试图进一步解释它,就像在引用的例子,我有一个像这样的结构: public interface IProduct { string SomeMethod(); } public

  • C#:继承/接口的静态成员? 2014-04-04

    有没有一种方法,要求一个类有一个特定的抽象会员? 事情是这样的: public interface IMaxLength { public static uint MaxLength { get; } } 或许这样的: public abstract class ComplexString { public abstract static uint MaxLength { get; } } 我想一个办法执行,一个类型(通过继承或接口?)有一个静态成员. 可以这样做? --------------

  • 重构得到继承/接口/协方差正确 2014-05-25

    编辑:我已经添加了C#equivilents以吸引更多的观众 - 希望这是确定 VS2008 - .NET 3.5(因此,我不明白协方差/逆变支持,据我知道吗?) 看来这很可能需要协方差/逆变,因此.NET 4中,这样可以防止这个问题是不可能的,随意,虽然回答.NET4,我宁愿一个简单的重构,如果它是可用的. 这应该是简单,但由于某种原因,我的大脑只是没有到(任意?)挑战今天上午. 我有2个应用程序(A&B). 应用程序中的细节有望aren'y重要的,所以下面是WRT APPB其中有3个项目,所

  • 是在对象上的继承接口数量代码味道? 2014-07-04

    我有一个对象(以及3相似的对象)继承自6接口: public class PaperContract : IDocument, ICanSell, IPrintable, INotifyPropertyChanged, IDataErrorInfo, ISerializeable 第一个表示,这是这对使之符合这不得不留在纸质文档,这是取代传统的一贯做法的文件格式,它被保存在和其他东西的属性的文件. 第二个表示该文件上有财务信息. 第三个表示,这份文件可以打印(似乎是显而易见的). 而其余的应该是

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.422 (s). 10 q(s)