Pat*_*ick 22 c# generics constraints
我想知道是否可以添加多个通用约束?
我有一个Add方法,它接受一个Object(电子邮件,电话或地址),所以我想的是:
public void Add<T>(T Obj)
where T : Address
where T : Email
where T : Phone
{
if (Obj is Address)
m_Address.Add(Obj as Address);
else if (Obj is Email)
m_Email.Add(Obj as Email);
else
m_Phone.Add(Obj as Phone);
}
Run Code Online (Sandbox Code Playgroud)
但我一直在:
"A constraint clause has already been specified for type parameter 'T'. All of the constraints for a type parameter must be specified in a single where clause."
Gre*_*ech 25
你不能这样做.为什么不只是有三种方法让编译器为你努力工作?
public void Add(Address address) { m_Address.Add(address); }
public void Add(Email email) { m_Email.Add(email); }
public void Add(Phone phone) { m_Phone.Add(phone); }
Run Code Online (Sandbox Code Playgroud)
CLR不允许多重继承,这正是您要表达的内容.你想T成为Address,Email一个Phone在同一时间(我认为这些都是类名).因此是不可能的.更重要的是,整个方法毫无意义.您要么必须为所有三个类引入基本接口,要么使用Add方法的三个重载.
| 归档时间: |
|
| 查看次数: |
14821 次 |
| 最近记录: |