繁体   English   中英

C#在接口上访问动态属性

[英]C# Accessing dynamic property on interface

我正在玩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.
    }
}

我错过了什么? 谢谢。

在版本2.0之前,不会引入ISecurityContext上的Data属性。 与nuget一起安装的默认值不包括预发布版本是1.4 哪个没有财产 确保使用正确的版本!

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

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM