tình hình của tôi:tham số kiểu Unconstrained đúc
interface ISomeInterface {
void DoSmth<T>(T other);
}
class Base : ISomeInterface
{
public virtual void DoSmth<T>(T other){
// for example do nothing
}
}
class Derived<T2> : Base {
Action<T2> MyAction {get;set;}
public override void DoSmth<T>(T other){
if(typeof(T2).IsAssignableFrom(typeof(T)))
MyAction((T2) other);
}
}
này mang lại cho tôi một lỗi: Cannot cast expression of type 'T' to type 'T2'
(hoặc Cannot convert type 'T' to 'T2'
)
Tôi hiểu rằng đó là vì không phải T hoặc T2 thường bị hạn chế với class
, nhưng nếu tôi biết - do IsAssignableFrom
- rằng tôi có thể sử dụng T khi tôi cần T2, làm thế nào tôi có thể thuyết phục trình biên dịch cho phép nó?
'(T2) (đối tượng) khác' – PetSerAl
' (T2) (đối tượng) khác ' – leppie
Yup, các bạn nói đúng - tôi đã nhận ý tưởng này chỉ vài giây sau khi đăng bài;) Viết câu trả lời và tôi sẽ chấp nhận nó:) – Gerino