接口属性名称因类而异

Vla*_*ani 2 c# oop

这是问题所在.

public abstract class A {}
public class B:A 
{
    public TypeF FieldB;
}
public class C:A 
{
    public TypeG FieldC;
}
public class TypeF:A {  }
public class TypeG:A {  }
Run Code Online (Sandbox Code Playgroud)

我想要接口ex:ITypeFG并在B和C BUT中实现它以具有属性名称FieldB和FieldC

interface ITypeFG
{
    public A FieldFG;  //But i want to have names TypeF in A and TypeG in B
}
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?谢谢.

Mar*_*ell 5

显式接口实现:

public class B : A, ITypeFG
{
    public TypeF FieldB { get; set; } // please don't expose public fields...
    A ITypeFG.FieldFG { get { return FieldB; } }
}
public class C : A, ITypeFG
{
    public TypeG FieldC { get; set; }
    A ITypeFG.FieldFG { get { return FieldC; } }
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果界面有setter,则需要进行强制转换:

public class B : A, ITypeFG
{
    public TypeF FieldB { get; set; }
    A ITypeFG.FieldFG { get { return FieldB; } set { FieldB = (TypeF)value; } }
}
public class C : A, ITypeFG
{
    public TypeG FieldC { get; set; }
    A ITypeFG.FieldFG { get { return FieldC; } set { FieldC = (TypeG)value; } }
}
Run Code Online (Sandbox Code Playgroud)