返回首页

?我有两个类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;

}

 }

回答

评论会员:p 时间:2