5

我正在玩用于 asp.net mvc 的 FluentSecurity 库。该库公开的接口之一ISecurityContext如下所示:

public interface ISecurityContext
{
    dynamic Data { get; }
    bool CurrenUserAuthenticated();
    IEnumerable<object> CurrenUserRoles();
}

当我尝试访问“数据”属性(如下所示)时,它不可用。尽管其他两种方法似乎可以访问。

public class ExperimentalPolicy : ISecurityPolicy
{
    public PolicyResult Enforce(ISecurityContext context)
    {
        dynamic data = context.Data; // Data property is not accessible.
    }
}

我错过了什么?谢谢。

4

2 回答 2

2

Dataon 属性ISecurityContext直到2.0版本才引入。与 nuget 一起安装但不包括预发行版的默认值为1.4。哪个没有属性。确保您使用的是正确的版本!

于 2012-08-15T19:25:09.997 回答
0

以下是按预期运行的,我做的和你有什么不同吗?

void Main()
{
  ATest t = new ATest();
  Experiment z = new Experiment();

  z.TestTest(t);
}

public class ATest : ITest
{
  public dynamic Data {get; set;}

  public ATest()
  {
     Data = new { Test = "This is a string" };
  }
}

// Define other methods and classes here
public interface ITest
{
  dynamic Data { get; }
}

public class Experiment
{
    public int TestTest(ITest context)
    {
       dynamic data = context.Data; 

       Console.WriteLine(data.Test);

       return 0;
    }
}
于 2012-08-15T02:49:43.970 回答