2012-01-02 52 views
2

我有一个属性的接口:强制接口属性的返回值是可序列化

interface IFoo 
{ 
    object Bar { get; } 
} 

有没有一种方法来指示实现类,即中Bar返回值必须是一个类那是可序列化的(用SerializableAttribute标记的)?

+0

似乎有一点研究,你不能把基于属性的编译时间约束。如果你的课程实现了ISerializable,那将允许你做你想做的事情。 – Hammerstein 2012-01-02 13:36:43

+0

我不认为这是可能的,因为大多数属性都是在运行时进行评估的(实际上,它看起来像编译时也使用了Serializable属性,但我仍然不认为有一种方法可以将类型约束到它)。你可以使用ISerializable接口吗? – ken 2012-01-02 13:39:58

回答

4

不,没有办法强制接口属性的返回类型标记为SerializableAttribute

你可以考虑使用ISerializable,尽管它当然不一样,并且会强制类型实现接口,而不是仅仅用属性标记。

interface IFoo 
{ 
    ISerializable Bar { get; } 
}