【发布时间】:2010-02-09 02:13:36
【问题描述】:
如何强制仅通过其接口调用对象?这只能通过访问修饰符来完成,但在 C# 中却做不到。
我有:
public interface IProfile { string GetName(); }
public class Profile : IProfile {
public string GetName() { return "Linh"; }
}
我有一个类似上面的代码部分。我把它放在一个类库中,然后我生成一个程序集。
在 Web 项目中,一些程序员会添加对该程序集的引用。如果他们想调用 Profile 类,那么他们必须使用 IProfile 接口作为下面的声明:
IProfile ip = new Profile();
ip.GetName();
但是一些粗心的程序员不会这样做。他们将使用以下方式:
Profile pr = new Profile();
pr.GetName();
【问题讨论】:
-
我写了一个类库,程序员会通过对象的接口调用其中的一些对象。但我认为这在 C# 中无法完成
-
Linh:请写一个你想做的伪代码版本。不是很清楚。
-
你有什么问题?
-
您是否要求显式接口实现,即指定只能通过接口引用而不是类引用来调用方法?或者关于让整个类内部化但将实例公开为接口类型?
-
公共接口 IProfile { string GetName(); } 公共类配置文件: IProfile { 公共字符串 GetName() { return "Linh"; } } 我上面有一个代码部分。之后我将它放在类库中,然后生成一个程序集。在 Web 项目中,一些程序员会添加对该程序集的引用。如果他们想调用 Profile 类,那么他们必须使用 IProfile 接口作为下面的声明: IProfile ip = new Profile(); ip.GetName();但是一些粗心的程序员不会这样做。他们将使用以下方式: Profile pr = new Profile(); pr.GetName();