是否有技术原因可以将PrincipalPermission放置在服务合同界面上?它只适用于实现合同的类或直接适用于类方法。
这不起作用。
[ServiceContract]
public interface IMyService
{
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
[OperationContract]
void MyFunction(string str);
}
但是如果我将属性放在实现IMyService的类中的匹配方法上,它就可以工作。
答案 0 :(得分:3)
使用实现方法上的属性,而不是放在方法实现的接口上的属性,在运行时检查角色。更一般地说,在.NET中,放在方法上的自定义属性与放在相应接口方法上的自定义属性(如果有)之间没有直接关系。
答案 1 :(得分:1)
我知道这篇文章很老,试图为OP问题提供一个具体的答案,原因在于界面和类之间的区别。
想一想; 接口是对实现的描述,它不是实现的行为。 接口只描述了类方法和事件等。
接口定义了一组成员的签名 实施者必须提供。接口无法提供实现 成员的详细信息〜(行为)。
继承接口的类提供了这些方法和事件的行为。 - 也就是说实现接口的[behavior~function]
那么为什么界面:
如果需要提供值类型的多态层次结构,请定义接口。
考虑定义接口以实现类似于多重继承的效果。
https://msdn.microsoft.com/library/ms229013(v=vs.100).aspx
希望这有助于其他人理解。