我有一个实现接口的对象列表,以及该接口的列表:
public interface IAM
{
int ID { get; set; }
void Save();
}
public class concreteIAM : IAM
{
public int ID { get; set; }
internal void Save(){
//save the object
}
//other staff for this particular class
}
public class MyList : List<IAM>
{
public void Save()
{
foreach (IAM iam in this)
{
iam.Save();
}
}
//other staff for this particular class
}
前面的代码无法编译,因为编译器要求所有接口成员都是公共的。
internal void Save(){
但我不想让我的 DLL 外部ConcreteIAM
的MyList
.
有什么办法可以做到这一点?
更新#1:大家好,感谢到目前为止的答案,但它们都不是我所需要的:
该接口需要是公共的,因为它是来自 dll 外部的客户端将使用的签名,以及ID
我在示例中不费心编写的其他属性以保持简单。
安德鲁,我不认为解决方案是创建一个工厂来创建另一个包含IAM
成员+保存的对象。我还在想……还有其他的想法吗?