Ala*_*ain 9 c# generics serialization
我有一段时间没有睡觉,所以这可能比我想象的要容易.
我有一个或多或少的泛型类:
public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
private T _value = null;
public T value
{
get { return _value; }
}
}
Run Code Online (Sandbox Code Playgroud)
在其他地方,在自定义序列化方法中,有人传入的object实际上是一个实例Reference<(something)>.我只想跳到每个Reference<>对象都有的"value"属性,所以我想去:
string serialize(object o)
{
return base.serialize( ((Reference<>) o).value );
}
Run Code Online (Sandbox Code Playgroud)
当然,生活并不那么简单,因为正如编译器所说:
using the generic type "Reference<T>" requires 1 type arguments
我怎么能做我想做的事?
SLa*_*aks 14
您可以使用属性创建协变通用接口:
interface IReference<out T> where T : ApiResource {
T Value { get; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以施放IReference<Anything>到IReference<object>或IReference<ApiResource>.
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |