c#中多个接口的属性可访问性

本文关键字:属性 访问 接口 | 更新日期: 2023-09-27 17:50:33

我会尽量说清楚。背景是这样的:我正在编写一个库,它将在不同的项目中用作动态DLL。

我有一个内部类和两个接口:

internal class FinalClass : IFinalClass
{
    public string Libelle { get; set; }
}
public interface IFinalClass : IBase
{
    // some properties
}
public interface IBase
{
    string Libelle { get; set; }
}

然后,我在我的项目中加载我的库,我只想操作IFinalClass类型。

我创建了一个包含许多IFinalClass项的组合框,并将displaymember设置为"Libelle"。问题是:我看不到"Libelle"的值,反而出现了FinalClass的汇编。(就像我们在做ToString()一样)。如果我是对的,组合框找不到属性"Libelle"。

但是这很奇怪,因为如果我在填充组合框数据源之前将IFinalClass项强制转换为IBase,那么一切都可以正常工作。

我很好奇在这个案例中发生了什么。

(注意实现"Libelle"的类是内部的,所以其他项目不知道这个类型。)

任何想法?:)谢谢你!

c#中多个接口的属性可访问性

"AParentClass"中的"Libelle"默认为"private"。但在IBase中,它默认是公共的。