我有兴趣对具有属性的对象进行扩展(在本例中为 [ProtoContract]
)。
例如,该扩展适用于:
[ProtoContract]
class myClass{
//stuff
}
...但不在...
class someRandomClass
{
}
这里的区别是通常你可以像这样做一个扩展函数:
public static byte[] Serialize<T>(this T instance){
...但在这种情况下,我希望它仅适用于具有 [ProtoContract]
属性的类。
这可能吗?
最佳答案
可以在您的 Serialize
方法中使用反射进行运行时检查,但不能在编译时进行检查,因为属性不是类型签名的一部分。
如果你想进行编译时检查,你将不得不使用一个没有方法的(有点难看的)接口(interface)而不是一个属性。
关于c# - 如何为具有特定属性的对象创建 Linq 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940843/