我有兴趣为具有属性的对象(在本例中为[ProtoContract]
)进行扩展。
例如,扩展名将适用于:
[ProtoContract]
class myClass{
//stuff
}
...但不是...
class someRandomClass
{
}
此处的区别是通常可以使扩展功能如下:
public static byte[] Serialize<T>(this T instance){
...但是在这种情况下,我希望它仅适用于具有
[ProtoContract]
属性的类。这可能吗?
最佳答案
您将无法使用where
进行过滤,仅需引发一个异常。考虑一下:
public static byte[] Serialize<T>(this T instance)
{
if (!Attribute.IsDefined(typeof(T), typeof(ProtoContractAttribute)))
{
throw new Exception(...);
}
}