我有三个班级,即#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.
}
有可能???我听说通过一些构造函数可以访问它。但不是通过接口......任何想法。
答案 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
}
}
我希望你有这个想法!