我有一节课:
class A {
public string a = "A-val" , b = "B-val";
}
Run Code Online (Sandbox Code Playgroud)
我想通过反射打印对象成员
//Object here is necessary.
Object data = new A();
FieldInfo[] fields = data.GetType().GetFields();
String str = "";
foreach(FieldInfo f in fields){
str += f.Name + " = " + f.GetValue(data) + "\r\n";
}
Run Code Online (Sandbox Code Playgroud)
这是期望的结果:
a = A-val
b = B-val
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.请帮忙,谢谢.
假设我们有下一个代码:
[SecuritySafeCritical]
public void SomeMethod()
{
SomeCriticalClass critical = new SomeCriticalClass();
Action someDelegate = () =>
{
critical.Do();
}
someDelegate();
}
Run Code Online (Sandbox Code Playgroud)
SomeMethod
签名具有[SecuritySafeCritical]
属性.SomeCriticalClass
是一些[SecurityCritical]
在类或方法Do
级别具有属性的类.Action
.调用critical.Do()
导致a 因为安全透明方法(匿名方法)正在尝试访问安全关键字段(SomeCriticalClass局部变量).MethodAccessException
FieldAccessException
critical
你怎么克服这个?
简单的方法是实现标记的实际方法,[SecuritySafeCritical]
而不是使用匿名委托.但这将我们带到了前匿名代表和拉姆纳斯时代.我不想要这个.
其他简单的方法就是不使用安全透明度.这不是解决方案.
几乎所有来自Microsoft和开源社区的可用库都没有考虑到安全透明性.也就是说,任何自己的自定义代码都必须通过[SecuritySafeCritical]
或者[SecurityCritical]
/ methods/properties/delegates 与第三方库进行互操作.
实际上我相信安全透明度是一个很好的工具,因为它会强制更好,更安全的软件设计,关键操作非常本地化,其余代码以最小的权限工作.
请参阅以下代码段:
(IEnumerable<object>)new Dictionary<string, string>()
Run Code Online (Sandbox Code Playgroud)
上面的强制转换将抛出无效的强制转换异常.
实际上,IDictionary<TKey, TValue>
也间接实现IEnumerable<out T>
,因为它也实现了ICollection<T>
.也就是说,整个演员应该是有效的.
事实上,对我来说更奇怪的是,如果我在调试器手表插槽上运行整个演员,它就可以了!
这是怎么回事?
我需要对同一域的安全(HTTPS)URL进行异步调用.
目前该页面正在使用常规HTTP(非安全).
换句话说:这是在同一个域中调用URL但使用HTTPS.
在将此调用切换到HTTPS之前,我结束了实现服务器端代理以允许跨域AJAX调用,但现在我面临相同的源策略,因为HTTP和HTTPS也被认为是不同的来源.所以这个代理是无法使用的.
摘要:在这种情况下如何进行跨域,异步POST请求?
各种说明:
目前我正在开发一些基础架构,并且我已经实现了自己的RESTful身份验证机制.
现在我想到,也许我不应该这样使用行业标准,因此与我的项目的互操作性在认证和授权方面可能是微不足道的,也更容易理解.
在查看了一些谷歌搜索的文章并在Stackoverflow中阅读了一些问答后,我找不到如何成为OpenID提供商 - 我不是在谈论使用谷歌,Windows Live,Facebook Connect等认证用户,我想开发一个支持OpenID的系统,如果有人想注册我的服务,他们将在我自己的域中进行 - .
实际上我的问题是:任何人都可以成为OpenID提供商,并且DotNetOpenAuth是一个库,可以在您自己的基础架构中开发此协议吗?
谢谢.
我在2015年TFS Build期间遇到了NuGet包恢复问题.
由于某些软件包需要NuGet 3.x客户端,因此我已将新的脚本化构建配置为使用自定义NuGet位置,其中我放置了NuGet Command-Line 3.x beta的可执行文件.
每当我运行构建时,所有软件包都无法恢复,NuGet会抛出"无法找到版本..."错误:
Unable to find version '1.1.10' of package 'Microsoft.Bcl'.
Unable to find version '4.0.10' of package 'System.Threading'.
Unable to find version '1.1.37' of package 'System.Collections.Immutable'.
Unable to find version '1.0.0' of package 'Owin'.
Unable to find version '4.1.0' of package 'NLog'.
Unable to find version '7.0.1' of package 'Newtonsoft.Json'.
Unable to find version '2.0.1' of package 'MongoDB.Driver.Core'.
Unable to find version '2.0.1' of package 'MongoDB.Driver'.
Unable to find version …
Run Code Online (Sandbox Code Playgroud) 当我myproject.shfbproj
使用Windows CMD 运行Sandcastle帮助文件生成器项目文件(例如)时,我遇到一个恼人的问题:$(SolutionDir)
具有相同的值$(ProjectDir)
,这意味着项目文档源将无法正确构建,因为我已经添加了自定义目标用途$(SolutionDir)
.
如果我从Visual Studio构建整个Sandcastle帮助文件生成器,它就会成功构建.
我正在使用以下命令(从存储项目的目录执行):
"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /p:Configuration=Development myproject.shfbproj
Run Code Online (Sandbox Code Playgroud)
这有什么解决方法吗?
例如,有一个像下一个的对象:
public class Container
{
public object Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
它以这种方式使用:
Container container = new Container
{
Data = new Dictionary<string, object> { { "Text", "Hello world" } }
};
Run Code Online (Sandbox Code Playgroud)
如果我反序列化从序列化上述实例获得的JSON字符串Data
,即使我提供了该属性ExpandoObjectConverter
,它也不会被反序列化为ExpandoObject
:
Container container = JsonConvert.Deserialize<Container>(jsonText, new ExpandoObjectConverter());
Run Code Online (Sandbox Code Playgroud)
如何反序列化使用匿名对象分配的类属性,或者至少不是具体类型ExpandoObject
?
有人回答说我可以使用动态对象.这对我不起作用.我知道我可以这样做,但事实并非如此,因为我需要一个ExpandoObject.谢谢.
其他一些用户回答我可以将JSON字符串反序列化为ExpandoObject
.这不是这个问题的目标.我需要反序列化具有动态属性的具体类型.在JSON字符串中,此属性可以是关联数组.
我环顾四周,我无法找到如何使用StackExchange.Redis库在Redis上执行键空间通知订阅.
检查可用的测试我发现使用频道的pubsub,但这更像是服务总线/排队,而不是订阅特定的Redis键事件.
是否可以使用StackExchange.Redis来利用此Redis功能?
我派生的OAuthAuthorizationServerProvider
是为了验证客户端和资源所有者.
当我验证资源所有者时,我发现他们的凭据无效,我打电话context.Rejected()
,HTTP响应附带HTTP/400错误请求状态代码,而我希望HTTP/401未经授权.
如何自定义OAuthAuthorizationServerProvider
响应HTTP状态代码?