小编t3r*_*rse的帖子

C#基础制作属性原子

它由Microsoft作为框架设计指南给出,属性应该彼此独立,而不是依赖于按任何特定顺序设置.

假设您有一个需要支持dimmensions和面积计算的三角形类.你会如何模仿这个?

这当然是被认为是gauche的设计,因为Area依赖于Base和Height首先设置:

class Triangle{
    public double Base {get;set;}
    public double Height {get;set;}
    public double Area {
        get{
            return (Base * Height) / 2;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

假设您使用构造函数,您可以确保此情况的默认值,但这是正确的方法吗?

class Triangle{
    public Triangle(double b, double h){
        Base = b;
        Height = h;
    }

    public double Base {get;set;}
    public double Height {get;set;}
    public double Area {
        get{
            return (Base * Height) / 2;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您仍然拥有一个依赖于其他属性的属性.为了成为一个纯粹主义者,我只能看到几种方法(我想它们可以合并):

  1. Make Base/Height具有只能在构造函数中设置的只读成员

  2. 将面积计算成方法.

  3. 使用某种工厂模式+ readonly成员来确保尽管可能存在依赖关系,但只能通过实例化Triangle类的方法来设置值.

问题:

  1. 指南是否切实可行(为了支持它,您是否必须在您的类中建立很多复杂性)?[例如,SqlConnection类允许您初始化连接字符串属性,但允许您更改它的各个部分,例如命令超时]

  2. 您如何管理保持您的财产彼此独立?

  3. 对于使用Silverlight/MVVM类型体系结构的人来说,由于数据绑定对象的工作方式,您是否接受属性中的依赖项?例如,绑定一个三角形实例,在屏幕上显示高度,基数和面积.

c# design-patterns

9
推荐指数
1
解决办法
1072
查看次数

列表的F#类型注释

在F#中,类型列表的类型注释是什么(例如int的列表)?通过一个简单的函数,我可以做如下注释:

let square(x:int)= ...

我已将x注释为int类型.但是如果我想为int列表做一个类型注释呢?例如,假设我有一个需要列表的max函数 - 我该如何为它做一个类型注释?

让max(数字:??)= ...

f# c#-to-f#

9
推荐指数
1
解决办法
2365
查看次数

从datetime开始的TSQL剥离日期

从DATETIME 剥离日期的最佳方法是什么,所以只剩下时间进行比较?

我知道我可以做到以下几点:

CONVERT(DATETIME, CONVERT(VARCHAR(8), GETDATE(),8))
Run Code Online (Sandbox Code Playgroud)

但这涉及转换和字符.如果我想检查时间(包括分钟)是否存储在DATETIME列中的其他两次之间,是否有一种优雅的方法来执行此操作而不必依赖于转换为字符串?

sql t-sql

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

C#3.0元组等价物(适合穷人)

我偶尔会发现自己在C#3.0中寻找模拟元组概念的方法.随着时间的推移,我有各种"穷人"的实现,这里有一些:

基本对象数组:

object[] poorTuple = new object[]{foo,bar,baz}; // basic object array
Run Code Online (Sandbox Code Playgroud)

更强烈的类型,HoHoHo ......

KeyValuePair<TypeA, KeyValuePair<TypeB, TypeC>> poorTuple;
Run Code Online (Sandbox Code Playgroud)

实现一个可以使用类型推断的类(从真实世界的函数编程中解除)

public static class Tuple{
  public static Tuple<T1, T2> Create<T1 foo, T2 bar>{
    return new Tuple<T1, T2>(foo, bar);
  }
}
// later: 
var data = Tuple.Create("foo", 42);
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 在C#3.0(或缺乏数据结构的选择语言)中使用穷人元组的任何其他方法.

  2. 在C#3.0中获取元组的最佳方法是什么- 如果有人有图书馆推荐,欢迎使用.

  3. 在什么时候(是的,概括为我)创建一个特定类型而不是列表或元组之类的东西是否有意义?(寻找经验法则)

tuples c#-3.0

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

是List <T>,其中T是匿名代表吗?

是否可以在C#中创建匿名委托列表?这是我想写的代码,但它不编译:

Action<int> method;
List<method> operations = new List<method>();
Run Code Online (Sandbox Code Playgroud)

c# generics lambda delegates

6
推荐指数
1
解决办法
635
查看次数

计算.NET DrawingContext DrawText方法中的文本环绕

我正在开发一个项目,让我近似文本呈现为图像和文本的DHTML编辑器.使用.NET 4 DrawingContext对象的DrawText方法呈现图像.

DrawText方法将文本与字体信息以及尺寸一起使用,并计算使文本尽可能合适所需的包装,如果文本太长则在末尾放置省略号.所以,如果我有以下代码在Rectangle中绘制文本,它将缩写它:

string longText = @"A choice of five engines, although the 2-liter turbo diesel, supposedly good for 48 m.p.g. highway, is not coming to America, at least for now. A 300-horsepower supercharged gasoline engine will likely be the first offered in the United States. All models will use start-stop technology, and fuel consumption will decrease by an average of 19 percent across the A6 lineup. A 245-horsepower A6 hybrid was also unveiled, but no decision has yet …
Run Code Online (Sandbox Code Playgroud)

c# text system.drawing

6
推荐指数
1
解决办法
3896
查看次数

从URL创建自动PDF

是否有可用于自动从URL创建PDF的PDF库?我使用的当前方法是"打印"页面并选择像PrimoPDF这样的PDF插件来生成PDF文档,但我想要自动化.

pdf pdf-generation

5
推荐指数
1
解决办法
3415
查看次数

编译时的java.lang.NoSuchMethodError

我正在尝试编译Android项目失败.错误消息是:

任务':mobile:_compileAppDebug'的执行失败.

java.lang.NoSuchMethodError:com.google.auto.common.MoreTypes.asTypeElements(Ljavax/lang/model/util/Types; Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableSet;

这是我的模块的gradle依赖项,其中我指定了许多库,包括google Auto:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library')
    compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
    provided 'com.google.auto.value:auto-value:1.0-rc1'
    apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
    provided 'org.glassfish:javax.annotation:10.0-b28' 
    compile 'com.jakewharton:butterknife:6.1.0' 
    compile 'com.f2prateek.dart:dart:1.1.0'
}
Run Code Online (Sandbox Code Playgroud)

当我查看依赖项时,我认为我只需要谷歌自动值,因为这是丢失方法所在的位置,但添加提供的并不能解决问题.

项目gradle文件包含retrolambda插件

dependencies {
    classpath 'me.tatarka:gradle-retrolambda:2.5.0'
    classpath 'com.android.tools.build:gradle:1.0.1'
    classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我确定哪些依赖项导致编译错误?有趣的是,当我将gradle文件复制到一个空项目时,一切运行正常.

java android butterknife dagger-2 retrolambda

5
推荐指数
1
解决办法
1327
查看次数

Erlang列表过滤器语法

我正在尝试编写一些可以过滤表单中的数组的Erlang:

[{dakota, "cold and snowy"}, {california, "perfect weather"}] % and so on
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的 - 当我尝试从werl创建.beam时出现语法错误.

-module(matcher).
-export([findkeywords/2]).

findkeywords(Word, Arr) -> 
    IsMatch = fun({Key, Desc}) -> 
        lists:any(fun(X) -> X==Word end, string:tokens(Desc, " ")),
    lists:filter(IsMatch, [{K, V} || {K, V} <- Arr]).
Run Code Online (Sandbox Code Playgroud)

谁能发现我的语法已关闭?

erlang

4
推荐指数
1
解决办法
1503
查看次数

TSQL检查数据库实例在线

检查Microsoft SQL Server实例是否已启动的最佳方法是什么?我有一个视图,它跨越两个Microsoft SQL Server实例,但在存储过程中查询它之前,我想验证服务器的第二个实例是否只有查询本地数据的回退选项.

第二个实例是链接服务器.

目前我正在考虑一个SQL CLR函数,它可以尝试以较短的超时打开连接,但我想知道它是否可以直接在Transact SQL中完成.

t-sql sql-server

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