?我有两个类AB两个类实现了接口ISomeInterface。但一些性质不需要为A类二,但我在客户端应用程序调用类调用相同ISomeInterface。我的问题是我不想Dictionarylt的字符串,GT; TypedDataSet IList的属性,在相同的接口。但客户需要使用这个IsomeInterface。,
其实DataValues()属性仅适用于A级元数据()和RecordCollection()属性同样适用于B类另外,如果我在未来引进新的C级和需要这样一个单独的属性,然后我的代码将看起来很丑陋,我不想。因此,我仍然可以使用相同IsomeInterface在我的客户端应用程序,并有相应的类相应的属性有什么办法呢?我想我需要使用策略设计模式,但混淆了如何来实现相同的。纠正我,如果我错了吗?
见下文:
interface ISomeInterface
{
string Id{get; set;}
void Display();
Dictionary<string, string> DataValues{get;};
TypedDataSet MetaData{get; }
IList<Record> RecordCollection{get; }
}
public class A: ISomeInterface
{
public string Id
{
return "A1";
}
void Display()
{
Console.Writeline("class A");
}
public Dictionary<string, string> DataValues()
{
return new Dictionary<string, string>();
}
public TypedDataSet MetaData()
{
//I dont want this method for class A
throw new NotImplementedException();
}
public IList<Record> RecordCollection()
{
//I dont want this method for class A
throw new NotImplementedException();
}
}
public class B: ISomeInterface
{
public string Id
{
return "B1";
}
void Display()
{
Console.Writeline("class B");
}
public Dictionary<string, string> DataValues()
{
//I dont want this method for class B
throw new NotImplementedException();
}
public TypedDataSet MetaData()
{
return new TypedDataSet();
}
public IList<Record> RecordCollection()
{
IList<Record> rc = null;
//do something
return rc;
}
}