我有一个带有表单的jsf页面,其中包含一个outputtext.outputtext组件的值是从辅助bean(或托管bean)调用的.我知道当我将其编码为#{MyBean.myString}时,Jsf将其重命名并调用getMyString()方法.然而,奇怪的是,当我将断点放到此组件的getter方法时,我看到它在页面呈现期间被调用了两次.outputtext在ah:form中,它是唯一绑定到backingbean的组件.我的意思是,jsf在第一次进入getter方法时应该得到它是如此奇怪,但它需要两次进入getter方法.你能解释一下jsf中这种行为的原因是什么吗?
任何帮助将不胜感激,祝福,巴里斯
ManagedSpy应该是.NET的Spy ++等价物,但不知何故,下载页面现在已不再可用了.
谁知道为什么?
谁知道更换?
--jeroen
综述:
请查看以下知识渊博的评论.
================================================== ============
我已经看到了managed types 很多stackoverflow Delphi主题中提到的术语.例如,它在主题中提到correctly initializing/finalizing.但是,当我谷歌时managed types,似乎大多数链接都与C++或.NET有关.例如,请参阅MSDN页面.有人可以帮助评论Delphi中定义的托管类型吗?鉴于Delphi for POSIX/MacOS正在诞生,是Windows特有的托管类型吗?感谢您提前付出的努力和时间!
PS:主题correctly initializing/finalizing:
在Delphi中初始化哪些变量?
delphi变量是否默认使用值初始化?
我应该如何在Delphi 7析构函数中释放一组对象?
在Delphi 2009中,我是否需要释放变体数组?
我有一些代码用于从字节数组中获取结构:
public static T GetValue<T>(byte[] data, int start) where T : struct
{
T d = default(T);
int elementsize = Marshal.SizeOf(typeof(T));
GCHandle sh = GCHandle.Alloc(d, GCHandleType.Pinned);
Marshal.Copy(data, start, sh.AddrOfPinnedObject(), elementsize);
sh.Free();
return d;
}
Run Code Online (Sandbox Code Playgroud)
但是,结构d永远不会被修改,并始终返回其默认值.
我已经查找了"正确"的方法,并且正在使用它,但仍然很好奇,因为我不明白为什么上面的内容不起作用.
它可以很简单:分配一些内存,d,获取指向它的指针,将一些字节复制到由此指向的内存中,返回.不仅如此,但是当我使用类似的代码但是d是T的数组时,它工作正常.
除非sh.AddrOfPinnedObject()没有真正指向d,但那有什么意义呢?
谁能告诉我为什么以上不起作用?
我有一个将由C#WP应用程序使用的WP C++运行时组件.
在C++ Runtime Component中,我有
public interface class ICallback
{
public:
virtual void DoSomething();
};
public ref class WindowsPhoneRuntimeComponent sealed
{
public:
WindowsPhoneRuntimeComponent();
void SetCallback(ICallback ^callback);
IMap<Platform::String^, Platform::Object^>^ CreateDictionary();
};
Run Code Online (Sandbox Code Playgroud)
在C#Application中,我
CallbackImp实现了ICallback.然后我做
CallbackImp cb = new CallbackImp ();
WindowsPhoneRuntimeComponent com = new WindowsPhoneRuntimeComponent();
// Set callback
com.SetCallback(cb);
// Get dictionary
IDictionary<string, object> dict = com.CreateDictionary();
Run Code Online (Sandbox Code Playgroud)
我有以下问题
我有一个现成的产品,它支持需要用Unmanaged C编写的自定义插件.它不支持Managed Dll,我的首选语言是c#.
需要传递回现货产品的信息非常基本,可以保存在一个字符串中.
所以我想我可以做到以下几点:
现在,在托管C++和C#Dll之间进行通信很容易.
但我无法弄清楚如何从非托管c dll调用托管c ++函数.任何简单示例代码的帮助都会很棒.
谢谢
编辑:我创建了一个代码项目文章,关于我是如何使用Alex的答案在下面做的. http://www.codeproject.com/Tips/695387/Calling-Csharp-NET-methods-from-unmanaged-code
我基本上理解托管和本机代码的概念及其区别.但他们在技术上如何相互沟通呢?想象一下以下示例:
我得到了一些为特定平台编译的静态或动态c ++库.现在我编写一个Java程序.在这段代码中,我使用'native'关键字调用库函数.我用字节码构建一个jar文件,c ++库文件将保持独立.结果将不再是与平台无关的.
但java程序如何知道调用的本机方法是否存在?
整个programmcode在运行时是如何执行的?我知道字节码将用JIT解释或编译.
这一切如何适合沙盒范例?本机代码是否也在沙箱中执行?
它是否有效,因为(java和c ++)代码到底都是机器代码?
也许这是一个愚蠢的问题.但我一直在想......
编辑:我有3个很好的答案.真的无法决定哪个对我帮助最大.但我会将这个问题标记为已经回答,以便从我这边关闭这个话题.
我有一个密封类,在程序集中有一个公共方法,我想添加一个日志系统,但不幸的是我没有源代码。因此,我尝试在特定的日志记录方法上绕过此方法,并在退出时调用原始方法。挂钩工作正常,但我无法获取任何类型的参数,或者至少我得到了完全错误的东西。
我也不能使用任何类型的注入或像 PostSharp 这样的库,所以我想知道这种东西是否可以在运行时以某种方式实现,或者我可以放弃吗?
为了给您提供更多详细信息,我将在下面粘贴一些代码部分:
public Hook(Delegate target, Delegate hook)
{
this.target = Marshal.GetFunctionPointerForDelegate(target);
targetDelegate = target;
this.hook = Marshal.GetFunctionPointerForDelegate(hook);
originalBytes = new byte[6];
Marshal.Copy(this.target, originalBytes, 0, 6);
byte[] hookPointerBytes = BitConverter.GetBytes(this.hook.ToInt32());
// Jump
newBytes = new byte[]
{
0x68, hookPointerBytes[0], hookPointerBytes[1], hookPointerBytes[2], hookPointerBytes[3], 0xC3
};
}
public object CallOriginal(params object[] args)
{
// Remove the patch
Uninstall();
// Invoke the original method
object ret = targetDelegate.DynamicInvoke(args);
// Re-apply the patch
Install();
return ret;
}
public sealed class Foo
{ …Run Code Online (Sandbox Code Playgroud) 我在ASP.NET(Web 表单)网站的 web.config 中定义了一些自定义 HTTP 响应标头。
我正在尝试编写一个managed HTTP module可以在将这些web.config定义的标头发送回客户端之前修改它们的方法。不幸的是,无论我使用什么事件 (PreSendRequestHeaders, EndRequest) ,集合中web.config都不存在定义的标头Response.Headers。
我知道PreSendRequestHeaders不推荐这样做,所以我也尝试使用,Response.AddOnSendingHeaders但这也不能让我访问标题。
具体来说,我想要做的是为我们的Content Security Policy (CSP). 我想自动向所有内联脚本块添加一个 nonce 属性(我有一个可用的 POC),然后修改HTTP CSP header(在 web.config 中定义)以将“nonce-”项添加到该script-src部分。
我不想添加CSP headerin 代码,因为它经常更改,重新编译和发布网站会很痛苦。
我是否需要求助于本机IIS module来实现这一点,还是有某种方法可以使用托管代码(首选)来做到这一点?
asp.net web-config managed http-headers content-security-policy
我想使用托管身份,而不是在存储帐户连接中配置的用户名和密码。我只看到使用连接字符串配置队列触发器的选项,但无法添加托管标识以避免配置机密。这可能吗?