小编Sam*_*der的帖子

处理和转换中哪一个更快int.Parse(),int.TryParse(),Convert.Int32()

哪一个更快,更强大,更可靠.为什么?

int.Parse()
int.TryParse()
Convert.ToInt32()
Run Code Online (Sandbox Code Playgroud)

.net c#

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

工厂创建泛型类

我有一个名为Validator的抽象类:

public abstract class Validator<T> where T : IValidatable
{
    public abstract bool Validate(T input);
}
Run Code Online (Sandbox Code Playgroud)

我有一些具体的实现.一个是AccountValidator:

public class AccountCreateValidator : Validator<IAccount>
{
    public override bool Validate(IAccount input)
    {
        //some validation
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个是LoginValidator:

public class LoginValidator : Validator<IAccount>
{
    public override bool Validate(IAccount input)
    {
        //some different validation
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在想要创建一个工厂来返回验证器实现的实例.就像是:

public static class ValidatorFactory
{
    public static Validator GetValidator(ValidationType validationType)
    {
        switch (validationType)
        {
            case ValidationType.AccountCreate:
                return new AccountCreateValidator();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我喜欢这样称呼它

Validator myValidator = ValidatorFactory.GetValidator(ValidationType.AccountCreate); 
Run Code Online (Sandbox Code Playgroud)

但是它不喜欢返回新的AccountCreateValidator()行,或者我将myValidator声明为Validator而不是 …

c# generics factory-pattern fluentvalidation

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

我是否需要在构建服务器上安装AzureSdk才能创建azure包?

我们使用TeamCity作为CI服务器(但我认为这适用于任何构建服务器).

我们尚未在构建服务器上安装azure SDK,并且能够使用此处描述解决方法构建使用SDK的项目.

我现在希望服务器生成用于部署到Azure的软件包,但是当我运行MSBuild任务来创建软件包时(按照此处的指示),我得到一个奇怪的错误

error MSB4057: The target "WatGetTargetFrameworkDirectories" does not exist in the project.

这产生了很少有用的谷歌搜索结果.

我需要安装SDK吗?或者此错误与其他内容有关?

msbuild teamcity continuous-integration packaging azure

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

Java:在方法返回中使用泛型,它与泛型类参数不同


    class SomeClass<E> {
       Map<String, String> someMethod();
    }

和用法


    SomeClass a = new SomeClass();
    a.someMethod().get("foo") // returns object, not string!

    //This code would not even compile
    String s = a.someMethod().get("foo");

但是,如果我从SomeClass中删除泛化(<E>) - 它可以工作.

如果我将此方法提取到接口并在声明中使用接口,它也可以工作:


    interface Foo {
     Map<String, String> someMethod();
    }

    class SomeClass implements Foo {
    //.....
    }

    Foo foo = new SomeClass();

    String s = foo.someMethod().getString("A");//it works

为什么会这样?我在哪里可以阅读它?什么是最好的解决方案?谢谢.

java generics

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

我可以返回特定泛型类型的所有通用对象吗?

我有一个界面:

public interface InterfaceA<S,T>{}
Run Code Online (Sandbox Code Playgroud)

我想加载实现此接口的所有类的实例,而不管通用参数ST.所以我有一个类,有一个方法来做到这一点.方法签名目前是:

public IEnumerable<object> GetInstancesOfImplementingTypes (Type targetType)
Run Code Online (Sandbox Code Playgroud)

通过加载的程序集查找具有一个类型,以反映GetGenericTypeDefinition等于所述GetGenericTypeDefinitiontargetType.我正在使用类型(而不是在方法上有一个T param),所以我不必指定泛型参数,即我可以像这样调用它:

var foundinstances = o.GetInstancesOfImplementingTypes(typeof(InterfaceA<,>))
Run Code Online (Sandbox Code Playgroud)

但我似乎必须将找到的类型的实例作为对象返回.是否有某种方式我可以返回一个比仅仅对象更受约束的类型,因为我知道所有实例都将是一些实现InterfaceA,我只是不知道什么ST将来.

.net generics

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

使用DataContractSerializer序列化子类实例的实际方法是什么?

使用DataContractSerializer序列化子类实例的实际方法是什么?

例如,以下是数据类型:

 [DataContract]
    public class Car
    {
        public Car()
        {
            Wheels = new Collection<Wheel>();
        }

        [DataMember]
        public Collection<Wheel> Wheels { get; set; }
    }

    [DataContract]    
    public abstract class Wheel
    {
        [DataMember]
        public string Name { get; set; }
    }

    [DataContract]
    public class MichelinWheel : Wheel
    {
        [DataMember]
        public string Wheel1Test { get; set; }
    }

    [DataContract]
    public class BridgeStoneWheel : Wheel
    {
        [DataMember]
        public string Wheel2Test { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这是创建带有两个不同车轮的汽车的代码:

    Car car = new Car();

    MichelinWheel w1 = …
Run Code Online (Sandbox Code Playgroud)

wcf serialization datacontract datacontractserializer

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

如何删除从ajax调用返回的JSON生成的Knockout映射数组的成员?

我正在使用knockoutjs和映射插件从服务器调用返回的JSON生成视图模型.我从服务器获取一个数组,创建一个将映射数组作为属性的模型,然后数据将数组绑定到模板以呈现屏幕上的所有数据.哪个效果很好.

我希望每个项目旁边都有一个按钮,可以将其删除,就像在此视频中的示例一样(参见14:20左右).

但是在视频中,他绑定了一个在数组元素上定义的函数.我的元素是使用映射插件从JSON生成的,所以我不确定如何向每个元素添加一个函数,或者我是否想要这样做.或者,我可以单击按钮绑定到viewmodel上的函数并传入与该按钮关联的元素的id吗?

我的javascript:

<script type="text/javascript">
    var supplierModel;

    $(function(){        
        getAllSuppliers();       
    })

    function getAllSuppliers(){
        $.getJSON('/SWM60Assignment/allsuppliers',function(responseData){
            supplierModel = new SupplierModel(responseData);
            ko.applyBindings(supplierModel);            
        });
    }
    var SupplierModel = function (supplierList) {
        var self = this;

        self.suppliers = ko.mapping.fromJS(supplierList);
        self.remove = function(supplierId){
            // how can I get the buttons to call this method with the id 
            // of the element they are the button for?
            alert('remove called with supplier id:'+supplierId);
        }
    };
</script>
Run Code Online (Sandbox Code Playgroud)

这是模板:

<script id="supplierTemplate" type="text/html">
    <li>
        Name: <span data-bind="text:name"></span> Address: <span …
Run Code Online (Sandbox Code Playgroud)

knockout-mapping-plugin knockout.js

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

如何获取/设置简单类型

我是Mockito的新手,我想知道如何存根获取/设置对.

例如

public interface Order {
     public short getStatus();
     public void setStatus(short status);
}
Run Code Online (Sandbox Code Playgroud)

如何使它们正常运行:

如果我在调用的某个地方调用setStatus(4);我想getStatus()返回4.如何才能做到这一点?

java getter setter stub mockito

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

使用实体框架更改持续交付和数据库架构

我们希望能够将我们的应用程序连续交付到生产中.我们目前部署到azure并使用table/blob存储并拥有一个azure sql数据库,我们可以使用该实体访问它.

随着数据库模式的更改,我们希望能够自动将模式更改应用到生产数据库,但是当应用程序处于活动状态并且代码更改同时部署到许多节点时,我们不确定是什么正确的方法是.

经过一些阅读后,似乎(这是有道理的)应用程序需要容忍2个不同的数据库模式版本,因此无论是旧版本的代码还是新版本的代码都无关紧要数据库,但是我不确定在应用程序中处理这个问题的最佳方法是使用实​​体框架.

我们是否应该在代码中具有EF生成的类的版本化实例,这些实例知道如何访问特定版本的模式?更新架构并且针对数据库运行旧版本的代码时会发生什么?

我们的实体框架类映射到db中特定模式的视图,并且没有任何内容映射到底层表,因此可能允许我们创建旧代码使用的v1视图和新代码使用的v2视图,但是保持这个感觉它会有点像一场噩梦(它已经足够痛苦只是维持EF映射到视图而不是表格)

那么这个领域的最佳实践是什么?别人怎么做才能解决这个问题?

c# entity-framework relational-database database-schema continuous-deployment

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

为什么在 c# 中通过启动进程运行 powershell 时不导入 powershell 模块?

我有 ac# 应用程序,它使用以下代码来调用 powershell 脚本:

string scriptFileToExecute = "someScript.ps1;
var startInfo = new ProcessStartInfo();
startInfo.FileName = @"powershell.exe";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = false;
startInfo.Arguments = string.Format(@"& '{0}' '{1}'", scriptFileToExecute, "argument");

var process = new Process { StartInfo = startInfo };
process.Start();

string output = process.StandardOutput.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

这工作正常并运行脚本。

但是,当我在脚本中包含这一行时:

Import-Module ServerManager
Run Code Online (Sandbox Code Playgroud)

脚本失败:

errors occurred during script execution: Import-Module : The specified module 'Servermanager' was not loaded because no valid module file was found in any module …

c# windows powershell

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