【发布时间】:2010-04-01 21:16:21
【问题描述】:
我有两个接口,IAuditable 和 ITransaction。
public interface IAuditable{
DateTime CreatedOn { get; }
string CreatedBy { get; }
}
public interface ITransaction : IAuditable {
double Amount{ get; }
}
还有一个实现ITransaction的类,调用Transaction。
public class Transaction : ITransaction{
public DateTime CreatedOn { get { return DateTime.Now; } }
public string CreatedBy { get { return "aspnet"; } }
public double Amount { get { return 0; } }
}
当我将 ITransactions 列表绑定到数据网格并使用自动创建列时,只有 Amount 被绑定。看不到 CreatedBy 和 CreatedOn。有没有办法让这些值在数据绑定期间可见?
【问题讨论】:
-
IDK 如果 PropertyDescriptor 可能是一个有用的类,因为它可以用来“告诉”绑定哪些属性可用于绑定。自从我使用它已经一年多了,所以我不能确定这是否是你需要的或如何使用它。
-
这很有趣。绑定 Transaction 对象可以正常工作,但绑定为 ITransaction 则不行。如果将 Transaction 强制转换为 ITransaction,您仍然可以访问所有属性,因为 ITransaction 继承自 IAuditable,但绑定算法不会获取这些属性。很有趣。
-
@Anthony - 这是对接口“继承”的常见误解。接口实际上并不像类那样继承。
-
@womp,是的,接口无法实现“继承”成员。有趣的是,作为开发人员,您在使用接口时可以访问继承的属性,但显然反射并不关注它。感谢您回答中的链接。
标签: c# winforms data-binding interface