小编sma*_*man的帖子

字符串将单引号替换为C#中的双引号

如何在C#中的字符串中用双引号(")替换单引号(')?

c# string replace

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

Applicative Functors正在映射的类别究竟是什么?

我一直在阅读Applicative Functors,我很难协调类别理论函数式编程各自术语的不匹配.

虽然我查看了各种博客,但我用于本研究的最完整资源是:

在类别理论中,仿函数是从类别到目标类别(在类别类别中)的态射."类别类别"包含一组对象,这些对象包含源类别和目标类别以及包含以下内容的仿函数集合:源类别的标识函数; 目标类别的身份仿函数; 并且,将源连接到目标的仿函数(如果源类别与目标类别相同并且所讨论的仿函数是标识,那么只需要那个仿函数).

在函数式编程中,applicative functors被描述为一对操作:

  • pure : a -> f a
  • <*> : f ( a -> b) -> f a -> f b.

这是我的问题

什么解释清楚地说明了应用函子的函数式编程定义与仿函数的类别理论定义之间的对应关系?

更具体地说,元组的哪些部分(pure,<*>)对应于:

  1. 来源类别
  2. 目标类别
  3. 仿函子所在的类别
  4. 仿函数的结构保留对源类对象的影响
  5. 仿函数对源类别的态射的结构保持效应

注意:我认识到这可能是一个不完整的比喻,对于我提到的每个概念,可能没有一对一的对应关系.我故意避免分享我对这里明显的对应关系的猜测,以便使我的问题变得简单,并避免进一步混淆问题.

haskell functional-programming category-theory applicative

25
推荐指数
2
解决办法
1207
查看次数

如何在ASP.NET页面上注册自定义服务器控件

我有一个项目,我正在尝试在页面上注册自定义服务器控件(没有.ascx文件).我目前正在使用

班级宣言

namespace MyApp.Controls{
    public class CustomControl: WebControl{
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }
            set
            {
                ViewState["Text"] = value;
            }
        }        
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write(Text);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的页面上,

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" %>
<myControls:CustomControl runat="server" Text="What up!" />
Run Code Online (Sandbox Code Playgroud)

我收到一个Parser Error,消息"Unknown server tag'myControls:CustomControl'."

我究竟做错了什么?

asp.net custom-server-controls servercontrols asp.net-customcontrol asp.net-controls

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

HttpCookieCollection.Add vs HttpCookieCollection.Set - Request.Cookies集合是否被复制到Response.Cookies集合?

我只是想澄清一下.

我知道,如果我在之前的请求中设置了cookie,它将显示在我的Request.Cookies收藏中.

我想更新现有的Cookie.

我的Request.Cookies收藏中的cookie是否已复制到我的Response.Cookies收藏中?我是否需要使用相同的密钥添加新的cookie Response.Cookies.Add(),或者我是否需要使用Response.Cookies.Set()

asp.net httpresponse httprequest httpcookie httpcookiecollection

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

ReadOnlyCollection vs Liskov - 如何正确建模可变集合的不可变表示

Liskov替换原则要求子类型必须满足超类型的契约.根据我的理解,这将导致ReadOnlyCollection<T>违反Liskov. ICollection<T>合同公开AddRemove运营,但只读子类型不符合本合同.例如,

IList<object> collection = new List<object>();
collection = new System.Collections.ObjectModel.ReadOnlyCollection<object>(collection);
collection.Add(new object());

    -- not supported exception
Run Code Online (Sandbox Code Playgroud)

显然需要不可变的集合.有没有关于.NET的建模方法的事情?有什么更好的方法呢? IEnumerable<T>在一个集合中做得很好,至少看起来是不可改变的.但是,语义非常不同,主要是因为IEnumerable没有明确地暴露任何状态.

在我的特定情况下,我正在尝试构建一个不可变的DAG类来支持FSM.我显然在开始时需要AddNode/ AddEdge方法,但我不希望它一旦运行就可以更改状态机.我很难表示DAG的不可变和可变表示之间的相似性.

现在,我的设计涉及预先使用DAG Builder,然后创建一次不可变图,此时它不再可编辑.Builder和具体的不可变DAG之间唯一的通用接口是Accept(IVisitor visitor).我担心,面对可能更简单的选择,这可能是过度设计/过于抽象.与此同时,我无法接受我可以在我的图形界面上公开可能NotSupportedException在客户端获得特定实现时抛出的方法.处理这个问题的正确方法是什么?

c# liskov-substitution-principle immutability readonly-collection directed-acyclic-graphs

23
推荐指数
2
解决办法
862
查看次数

CSS选择器中是否允许使用括号?

在下面的示例中,我想创建一个CSS规则,该规则仅适用于带有文本"Blockhead"的标题.

 <div class="gumby">
     <span class="pokey"></span>
     <h3>Blockhead</h3>
     <h3>Clay rules</h3>
 </div>
Run Code Online (Sandbox Code Playgroud)

我可以使用括号,例如(.gumby > .pokey) + h3?如果没有,我的替代方案是什么?

css css-selectors css3

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

你能从DbSet获得DbContext吗?

在我的应用程序中,有时需要在一次操作中将10,000行或更多行保存到数据库中.我发现简单地迭代并一次添加一个项目可能需要花费半个多小时.

但是,如果我禁用AutoDetectChangesEnabled它需要约5秒(这正是我想要的)

我正在尝试向DbSet创建一个名为"AddRange"的扩展方法,该方法将禁用AutoDetectChangesEnabled,然后在完成时重新启用它.

public static void AddRange<TEntity>(this DbSet<TEntity> set, DbContext con, IEnumerable<TEntity> items) where TEntity : class
    {
        // Disable auto detect changes for speed
        var detectChanges = con.Configuration.AutoDetectChangesEnabled;
        try
        {
            con.Configuration.AutoDetectChangesEnabled = false;

            foreach (var item in items)
            {
                set.Add(item);
            }
        }
        finally
        {
            con.Configuration.AutoDetectChangesEnabled = detectChanges;
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:有没有办法从DbSet获取DbContext?我不喜欢把它作为参数 - 感觉它应该是不必要的.

c# entity-framework entity-framework-4.1 dbcontext dbset

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

为什么ICustomAttributeProvider.GetCustomAttributes()返回object []而不是Attribute []?

为什么ICustomAttributeProvider.GetCustomAttributes()返回object[]而不是Attribute[]

在使用ICustomAttributeProvidermscorlib 的实现时是否有任何情况,系统程序集将返回非类型的对象Attribute

.net c# system.reflection getcustomattributes

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

为什么我要避免在C#中创建一个MutableTuple <T1,T2,TEtc>类?

我是.NET 4.0的Tuple类的忠实粉丝.

元组中的所有项都是不可变的.有明显的情况这是有益的(最明显的是当元组用于表示没有声明的临时ValueType时).

但是,我有一些用例,我可以看到具有setter的元组项目的好处(除了TRestType 中的Type参数Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>).鉴于我可以访问源代码和Matt Ellis关于"构建元组"的文章,看起来实现这样一个很简单MutableTuple<T1,T2,TEtc>.

微软显然决定使其Tuple不可变. 我是否有理由忽视我不应该使用可变的非元组项创建替代实现?

c# oop tuples .net-4.0 c#-4.0

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

为什么我不能改变String.Empty的值?

虽然我明白改变价值String.Empty会是一个坏主意,但我不明白为什么我不能这样做.

为了得到我的意思,请考虑以下课程:

public class SomeContext 
{ 
    static SomeContext(){}
    public static readonly string Green = "Green";
    public static readonly SomeContext Instance = new SomeContext();

    private SomeContext(){}
    public readonly string Blue = "Blue";

    public static void PrintValues()
    { 
        Console.WriteLine(new { Green, Instance.Blue, String.Empty }.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个小的控制台应用程序,试图操纵这三个只读字段.它可以成功地将蓝色和绿色变成粉红色,但是Empty保持不变:

        SomeContext.PrintValues();
        ///  prints out : { Green = Green, Blue = Blue, Empty = }
        typeof(SomeContext).GetField("Blue").SetValue(SomeContext.Instance, "Pink");
        typeof(SomeContext).GetField("Green", BindingFlags.Public | BindingFlags.Static).SetValue(null, "Pink");
        typeof(String).GetField("Empty", BindingFlags.Public | BindingFlags.Static).SetValue(null, "Pink");
        SomeContext.PrintValues();
        ///  prints out : { …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection constants immutability

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