小编Sly*_*Sly的帖子

正确使用log4net的方法(记录器命名)

有两种配置和使用log4net的方法.第一个是我可以配置自己的appender和相关的记录器:

<!-- language: xml -->

<appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="Logs\myLog.log" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level - %message%n" />
    </layout>
</appender>

<logger name="myLog">
    <level value="All"></level>
    <appender-ref ref="myLogAppender" />
</logger>
Run Code Online (Sandbox Code Playgroud)

然后,当我想在日志中写一些东西时,我可以执行以下操作:

ILog log = LogManager.GetLogger("myLog");
log.Info("message");
Run Code Online (Sandbox Code Playgroud)

另一种使用方法是将root配置为我想要的详细信息:

<!-- language: xml -->

<root>
    <level value="Error" />
    <appender-ref ref="myLogAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以记录这样的消息:

ILog log = LogManager.GetLogger(typeof(Bar));
log.Info("message");
Run Code Online (Sandbox Code Playgroud)

第二种方法的好处是您可以动态启用或禁用某些消息.但问题是我正在使用EPiServer CMS进行开发,它有自己的使用log4net的日志记录系统,如果我在根级别启用信息日志记录,那么将编写大量系统日志.

你如何使用log4net?系统的每个部分都在自己的记录器中写入,或者所有内容都是用默认记录器编写的,配置决定下一步做什么?

.net c# logging log4net episerver

80
推荐指数
3
解决办法
13万
查看次数

如何使复选框更大

我正在使用这样的复选框控件:

<CheckBox VerticalAlignment="Bottom" IsChecked="{Binding Selected}" 
      Grid.Column="0" 
      FontSize="{StaticResource PhoneFontSizeLarge}" 
      Content="{Binding Name}">
</CheckBox>
Run Code Online (Sandbox Code Playgroud)

问题是我将尺寸改变得更大一些.在这种情况下,文本变得越来越大,但是tick本身保持不变.它看起来很难看,我可以以某种方式调整复选框吗?

更新 我在Windows手机上这样做,所以LayoutTransform在这里不合适

silverlight wpf windows-phone-7 windows-phone-8

35
推荐指数
3
解决办法
4万
查看次数

实体框架4.3在应用程序启动时运行迁移

使用EF 4.3在应用程序启动时执行所有必需的数据库迁移的最佳方法是什么?

.net migration entity-framework ef-migrations entity-framework-4.3

34
推荐指数
2
解决办法
1万
查看次数

如果使用TestFixture属性有什么区别

我看不出有TestFixture属性的类的行为有什么不同.所有TearDown并且SetUp以同样的方式工作.除了这个属性用法的语义之外,还有什么理由吗?

installation nunit unit-testing

32
推荐指数
2
解决办法
1万
查看次数

git archive fatal:协议不支持操作

我正在尝试检查远程git存储库的一部分.正如这里所建议的,在命令的帮助下

git archive --format=zip --remote=http://path_to_repository
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

fatal: Operation not supported by protocol.
Unexpected end of command stream
Run Code Online (Sandbox Code Playgroud)

Git是不是用http协议支持这个操作?这是托管环境或git本身的问题?任何指示都会有所帮助,谢谢.

git git-checkout git-archive

26
推荐指数
2
解决办法
1万
查看次数

列出<T>以实现IQueryable <T>

我正在尝试为我的IRepository界面创建一个模拟:

public interface IRepository<T> : ICollection<T>, IQueryable<T>
{
}
Run Code Online (Sandbox Code Playgroud)

有了这个实现:

public class RepositoryFake<T> : List<T>, IRepository<T>
{
    public Expression Expression
    {
        get
        {
            return this.AsQueryable().Expression;
        }
    }

    public Type ElementType
    {
        get
        {
            return this.AsQueryable().ElementType;
        }
    }

    public IQueryProvider Provider
    {
        get
        {
            return this.AsQueryable().Provider;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,我会遇到StackOverflow异常.如何正确实现此接口才能只使用List一个存储库?

用法很简单

[Test]
public void Test()
{
    RepositoryFake<User> users = new RepositoryFake<User>();
    users.Add(new User());

    List<User> list = (from user in users 
                 where user.Id == "5"
                 select …
Run Code Online (Sandbox Code Playgroud)

.net c# linq iqueryable

25
推荐指数
1
解决办法
3万
查看次数

vuexjs getter with argument

有没有办法将参数传递给getter vuex store?就像是:

new Vuex.Store({
  getters: {
    someMethod(arg){
       // return data from store with query on args
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

所以我可以使用组件

<template>
    <div>
        <p>{{someMethod(this.id)}}</p>
    </div>
</template>
<script lang="ts">
    import { mapGetters } from "vuex"

    export default {
        props: ['id'],
        computed: mapGetters(['someMethod'])
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但在vuex中,第一个参数是state,第二个是其他参数getters.可能吗?

javascript vue.js vuex vuejs2

24
推荐指数
5
解决办法
2万
查看次数

Vuex呈现从REST API获取的数据

对于这样的组件

<template>
    <div>
        <router-link :to="{name:'section', params: { sectionId: firstSectionId }}">Start</router-link>
    </div>
</template>

<script lang="ts">
    import { mapActions } from "vuex"

    export default {
        mounted() {
            this.getSectionId()
        },
        computed: {
            firstSectionId() {
                return this.$store.state.firstSectionId
            }
        },
        methods: mapActions(["getSectionId"])
    }
</script>
Run Code Online (Sandbox Code Playgroud)

商店:

const store: any = new Vuex.Store({
    state: {
        firstSectionId: null
    },
    // actions,
    // mutations
})
Run Code Online (Sandbox Code Playgroud)

我在一个Web请求getSectionId的行动,并会以异步方式获取数据并调用的突变,将填补firstSectionIdstate.在初始渲染firstSectionId过程中null,我得到的警告是在渲染过程中缺少必需的参数router-link.

这里添加不是问题v-if="firstSectionId".但一般来说,从服务器获取数据的方法是什么?目前我的所有组件都在检查呈现前是否存在数据,是否正常或是否有更好的方法等待数据在呈现之前加载?

vue.js vuex

23
推荐指数
1
解决办法
3万
查看次数

为什么testFixture而不是TestClass?

组织单元测试有三种方法:按夹具,类或特征测试.但TestClass的NUnit属性称为TestFixture.这有什么历史原因吗?

nunit

21
推荐指数
3
解决办法
1万
查看次数

TextInputLayout passwordToggle 圆角

我正在使用TextInputLayoutandroid 设计库版本 25.1.1。使用以下代码:

<android.support.design.widget.TextInputLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  local:passwordToggleEnabled="true"
  local:hintEnabled="false">
  <android.support.design.widget.TextInputEditText
    android:id="@+id/confirmationEditText"
    android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

但是当按下密码切换图标时,它的涟漪效果会被绘制在 TextInput 的背景之上: 背景按下状态

如何设置圆角半径passwordToggle?我可以引用它现有的背景并用所需的属性“包装”它吗(如何找到切换使用的默认可绘制对象的路径)?

android android-layout xamarin android-design-library android-textinputlayout

16
推荐指数
3
解决办法
1万
查看次数