Я оглянулся, но не могу понять, что я пытаюсь сделать.Я хочу создать базовый интерфейс, из которого могут быть получены несколько других классов.Нет проблем.Затем я хочу другой класс, у которого есть свойство общей интерфейсной базы, но не гарантирующее, какую подклассовую версию интерфейса он будет использовать.Какой подход я должен использовать.Вот некоторый пример того, что я пытаюсь смоделировать.
public interface IBaseline
{
string CommonToAll { get; }
int AnotherCommon { get; }
void CommonFunction();
}
Теперь, производные новые классы из интерфейса IBaseline
public class CDerived1 : IBaseline
{
private string CommonToAll
{ get { return Whatever; }}
private int AnotherCommon
{ get { reutrn WhateverInt; }}
public void CommonFunction)
{ // do something with this classes specific elements... }
// now, here are some custom things specific to this class
private string CustomToThisClass;
private int CustomFunction()
{ // do something }
}
public class CDerived2: IBaseline
{
private string CommonToAll
{ get { return Whatever; }}
private int AnotherCommon
{ get { reutrn WhateverInt; }}
public void CommonFunction)
{ // do something with this classes specific elements... }
// again, these are totally different to the second derived class
private string TotallyDifferent;
private bool DiffFunction( int anyParm )
{ // do something different }
}
Теперь, для моей путаницы в реализации.Я хочу создать новый класс с полем, которое может иметь ЛЮБУЮ структуру IBaseline, но не знаю, какая версия во время компиляции.
public class OtherClass
{
IBaseline GenericInstance;
...
...
public void CommonAccessFunction()
{
// call the common function that is generic no matter WHAT
// subclassed instance is used.
GenericInstance.CommonFunction();
}
}