设计建议 - 具有属性,接口(或抽象)的类 - 访问问题

时间:2017-08-21 21:34:12

标签: c# design-patterns

我有三个班级,即#34; Class1"," Class2"和" Class3"和一个接口IBase。

interface IBase
{
  + PrpCommon {get;set;}
}

Class1:IBase
{
 + PrpCommon {get;set;}

+ Class1Prp {get;set;} ( and few other properties )
}

Class2:IBase
{
 + PrpCommon {get;set;}
 + Class2Prp {get;set;} ( and few other properties )
}

Class3:IBase
{
  + PrpCommon {get;set;}
  + Class3Prp {get;set;} }

AccessClass
{

  AccessFunction(IBase)
{

    return IBase.PrpCommon;     
// here i need to access the other properties like Class3Prpr or Class2Prp or Class1Prp.
}
}

MainClass
{
  AccessClass.AccessFunction(new Class1)  
 // Here need to access the other properties like Class3Prpr or Class2Prp or Class1Prp.
 }

有可能???我听说通过一些构造函数可以访问它。但不是通过接口......任何想法。

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确。是否要访问AccessClass中派生类的属性? 在这种情况下,一个选项是具有AccessClass的基类或接口,每个IBase类的特定实现和AccessClassFactory。像这样:

interface IAccessClass
{
  AccessFunction<T>(T item) where T : IBase;
}

class AccessClass1 : IAccessClass<Class1>{
   AccessFunction(Class1 item){
      // here you can do whatever you want with the properties
   }
}

class AccessClassFactory{
   IAccessClass<T> Create<T>() where T : IBase{
      var classType = typeof(T);
      if(classType == typeof(Class1)) return new AccessClass1();
      // and so on
   }
}

我希望你有这个想法!