我有以下不允许的代码(下面的错误),为什么?
struct A
{
private int b;
public A(int x)
{
B = x;
}
public int B
{
get { return b; }
set { b=value; }
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
在将所有字段分配给字段之前,不能使用'this'对象'Test.x'必须在控制返回给调用者之前完全分配
我正在使用Log4Net 2.0,我根据需要工作,但是为特定的日志语句添加另一个记录器.所有日志记录都是针对单个文件追加器完成的.我想要做的更改是第三方应用程序触发包含调试/错误信息的事件,我可以捕获这些信息,虽然有用但我觉得它污染了正常的应用程序日志文件,而是宁愿将它存储在自己的日志中文件.
我想要的最终结果是一个名为log-file.txt来自应用程序的所有日志记录的文件,除了第三方日志记录.并且第二个文件log-file-3rdparty.txt仅使用第三方应用程序进行日志记录.我的问题是设置Log4Net有2个单独的记录器.我已经尝试创建第二个LogFileAppender并将其添加到root,但是所有这一切都将相同的日志记录语句放入两个记录器中.
在整个应用程序中,我们目前拥有GetLogger语句,如下所示.理想情况下,这需要保持不变,因此现有的日志记录不会改变.我需要一个不受此语句影响的新记录器,而是纯粹为第三方记录实例化.
private readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
而App.Config如下.
< log4net>
<logger name="MyApp.Logging">
<level value="DEBUG"/>
</logger>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value=" [Application started] " />
<param name="Footer" value="[Application Finished] "/>
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
</ log4net>
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?
编辑
如果它有任何区别.第三方日志事件捕获在同一个类中,我的一些应用程序日志事件也被触发,这是因为该类负责控制第三方软件.这是一个问题吗?我确实有一些想法,log4net可以区分基于类名创建的记录器,如果是这样的话,我是否需要重构第三方记录到自己的类?
如果有人有兴趣将PDF文件保存在PDFKit中间件gem所显示的文件系统中,那么这里是......
callmiddleware.rb文件的方法.在覆盖中只需替换此行:
body = PDFKit.new(translate_paths(body, env), @options).to_pdf
Run Code Online (Sandbox Code Playgroud)
同
pdf = PDFKit.new(translate_paths(body, env), @options)
file = pdf.to_file('Your/file/name/path')
Mymodel.my_method() #You can write your method here to use that file
body = pdf.to_pdf #Here you can change the response body
Run Code Online (Sandbox Code Playgroud)如果您不想提供pdf响应,还可以覆盖response-body和content-type.如果您有任何进一步的查询,请继续.
这个过程真的很有帮助,因为当你在视图文件中使用大量的JavaScript时,render_to_string方法将无法工作,即它不会渲染繁重的JavaScript.
我目前正在尝试编写一些代码来消费来自Twitter流API的用户流:
http://dev.twitter.com/pages/user_streams
我正在努力使用基本身份验证连接到它并假设(文档没有说)OAuth是必需的.
但是我找不到支持流媒体和OAuth的Twitter .NET库(实际上,在使用流式API时没有找到任何合适的样本/文档).
有谁知道吗?目前我已经编写了自己的代码来使用C#和动态来使用示例流,但实际上并不想实现OAuth(人们说它的复杂性).
编辑:
虽然,我已经能够通过TweetSharp库获得访问令牌和访问令牌机密,但我不知道如何生成所需的头文件/实现oauth,这可能是我猜的另一种选择,而不是一个完整的库.
精简版:
#include <functional>
struct A
{
int func(int x, int y)
{
return x+y;
}
};
int main()
{
typedef std::function<int(int, int) > Funcp;
A a;
//Funcp func = std:::bind(&A::func, &a);
Funcp func = std::bind(&A::func, a, std::placeholders::_1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在上述两个绑定函数中都遇到错误:
error C2825: '_Fty': must be a class or namespace when followed by '::'
Run Code Online (Sandbox Code Playgroud)
语法错误在哪里?我正在使用visual studio 2010
我正在使用AVAudioRecorder以下设置在iPhone上录制音频:
NSMutableDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:1], AVNumberOfChannelsKey,
[NSNumber numberWithInt:12800], AVEncoderBitRateKey,
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
[NSNumber numberWithInt: AVAudioQualityHigh], AVEncoderAudioQualityKey,
nil];
Run Code Online (Sandbox Code Playgroud)
(我可以灵活处理大多数这些设置,但我必须使用MPEG4 AAC.)
我将音频保存到文件中.
用户需要能够在以后返回并继续录制到同一文件.似乎没有选择直接使用AVAudioRecorder,所以我正在录制到一个新文件并连接它们.
目前我使用附加的文件AVMutableComposition和AVMutableCompositionTrack为在这里,但它是更长的录音很慢,所以这是不是真的可行.
我认为如果我可以从第二个文件中删除标题,将音频数据附加到第一个文件,然后更改组合文件的标题以反映新的持续时间,那会快得多.据我所知,两个文件都是使用完全相同的设置创建的,我认为标题中的其他细节应该相同.
遗憾的是,我无法找到有关标头格式的信息,或者是否可以通过这种方式组合文件.
所以我的问题是:
我正在编写一个使用推送通知的Windows Phone 7应用程序,并且有一个类负责管理MS Notification Server与我在云中的服务之间的交互.但是,当我试图在我的设备上打开频道时,HttpNotificationChannel会抛出InvalidOperationException,并显示消息"无法打开频道".根据MSDN, 我应该尝试再次打开频道.
我打开推送通知的代码段遵循标准模式;
public class HttpNotification {
private const string kChannelName = "MyApp.PushNotification";
private HttpNotificationChannel _Channel;
public void Register() {
try {
_Channel = HttpNotificationChannel.Find(kChannelName);
if (_Channel == null) {
_Channel = new HttpNotificationChannel(kChannelName);
InstallEventHandlers();
// This line throws
_Channel.Open();
} else {
InstallEventHandlers();
};
} catch (InvalidOperationException ex) {
MessageBox.Show(string.Format("Failed to initialise Push Notifications - {0}", ex.Message));
};
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定MSDN的意思是"尝试再次打开频道".我已经在try/catch中调用了Open(),并在两次尝试之间暂停5秒,但是没有成功.我也尝试了相同的方法围绕整个方法(即每次抛出时调用HttpNotificationChannel.Find())无济于事.
我知道这有点模糊 - 但是想知道是否有人有任何处理这个的建议?这个相同的代码在模拟器中完美运行,但每次在我的实际设备上都会失败,即使在我的应用程序未安装和重新安装之后也是如此.鉴于这是我的实际手机,我有点保持沉默,希望它解决了这个问题,并且不愿意将此应用程序发布到市场,因为这个问题困扰着我.
更新:另外一点,我使用的是未经身份验证的渠道,因此我的基于云的服务没有安装证书.
更新#2:此外,我刚尝试将Microsoft Phone Push Recipe部署到我的设备上,它也抛出相同的异常.