如何解决如何将T转换为特定对象
我想从特定的类中检索BalanceAmount。我该怎么办
public class SettlePendingAmount<T> : Form
{
public T Activity { private get; set; }
private void Initialize()
{
var bal = 0
if (Activity is Invoice)
{
bal = ((Invoice)Activity).BalanceAmount;
}
if (Activity is Purchase)
{
bal = ((Purchase)Activity).BalanceAmount;
}
}
}
解决方法
我希望您要使用一个界面:
public interface IBalance
{
// I inferred int from your var bal = 0;
// if that's incorrect,feel free to change it
int BalanceAmount { get; }
}
现在,我们将对T
添加一个通用约束:
public class SettlePendingAmount<T> : Form
where T: IBalance
我们还需要将此接口添加到Invoice
和Purchase
:
public class Invoice : IBalance
{
public int BalanceAmount { get; } // or get; set; (whatever you currently have)
}
public class Purchase : IBalance
{
public int BalanceAmount { get; } // or get; set; (whatever you currently have)
}
然后我们可以自由访问BalanceAmount:
public class SettlePendingAmount<T> : Form
where T : IBalance
{
public T Activity { private get; set; }
private void Initialize()
{
var bal = Activity.BalanceAmount;
}
}
这里的缺点是SettlePendingAmount
类只能为实现此接口的类型构造。从您所做的简短概述中,我怀疑这是可以的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。