为什么PrincipalPermission不能放在服务合同接口上,有什么技术原因吗?它只在实现契约的类上工作,或者直接在类方法上工作。
这不管用。
[ServiceContract]
public interface IMyService
{
[PrincipalPermission(SecurityAction.Demand, Role="Admin")]
[OperationContract]
void MyFunction(string str);
}但是,如果我将属性放在实现IMyService的类中的匹配方法上,它就会起作用。
发布于 2012-11-23 01:38:05
角色在运行时被检查,使用放在实现方法上的属性,而不是放在方法实现的接口上的属性。更广泛地说,在.NET中,放在方法上的自定义属性和放在相应接口方法上的自定义属性之间没有直接关系。
发布于 2015-11-20 03:12:35
我知道这篇文章试图给OPs问题提供一个具体的答案,原因在于接口和类之间的区别。
想想看,接口是对实现的描述,而不是实现的行为。接口只是描述类、方法和事件等。
接口定义实现者必须提供的一组成员的签名。接口无法为成员提供行为实现详细信息~()。
继承接口的类提供这些方法和事件的行为。-也就是实现接口的行为~功能
那么为什么要使用接口:
如果您需要提供值类型的多态层次结构,请定义一个接口。
考虑定义接口以实现类似于多重继承的效果。
https://msdn.microsoft.com/library/ms229013(v=vs.100).aspx
希望这能帮助其他人理解。
https://stackoverflow.com/questions/13517343
复制相似问题