我编写了一个MVP项目,其中View是一个实现我的IView接口的WinForm.我正在审核代码,在可以的地方进行改进,并且想询问您关于视图和演示者如何交互的想法.您认为以下哪项是最佳做法?
例如,我的MVP使用通过serialport进行通信的服务.为了连接到远程设备,我的视图调用公共Presenter方法Connect(),然后调用相应的服务方法.
提升Connect()事件并让演示者听取它是更好的做法吗?
我有一个选择列表,我想将其初始化为从服务器返回的保存值。但是,无论我尝试什么,都无法使用所选的值。
我正在使用Angular 2.2.0和Reactive Forms。
这是选择列表的值列表。
private categoryList: ICategory[] = [
new Category({ id: 1, name: 'Cat 1' }),
new Category({ id: 2, name: 'Cat 2' }),
new Category({ id: 3, name: 'cat 3' })
];
Run Code Online (Sandbox Code Playgroud)
保存的值为:
{ id: 1, name: 'Cat 1' }
Run Code Online (Sandbox Code Playgroud)
使用FormBuilder创建表单
this.itemForm = this.fb.group({
name: [null, Validators.required],
description: [null, Validators.required],
weight: [null, Validators.required],
dimensions: [null, Validators.required],
category: [null, Validators.required]
});
Run Code Online (Sandbox Code Playgroud)
然后用保存的数据初始化
(<FormGroup>this.itemForm)
.setValue({
name: item.name,
description: item.description,
weight: item.weight,
dimensions: item.dimensions,
category: item.category
}, …Run Code Online (Sandbox Code Playgroud) 我对函数参数的使用有疑问.
在过去,我总是编写我的代码,以便函数所需的所有信息都作为参数传递.即不使用全局参数.
然而,通过查看其他人的代码,没有参数的函数似乎是常态.我应该注意,这些是针对类的私有函数,并且作为参数传递的值实际上是该类的私有成员变量.
这导致更整洁的代码和我开始倾向于私人功能,但希望其他人的意见.
例如
Start();
Process();
Stop();
Run Code Online (Sandbox Code Playgroud)
更整洁,更可读:
ParamD = Start(paramA, ParamB, ParamC);
Process(ParamA, ParamD);
Stop(ParamC);
Run Code Online (Sandbox Code Playgroud)
它确实从方法的角度来打破封装,但不是从类的角度来看.
我正在使用C#.Net并且有一个由多种形式继承的基本形式.
直到昨天,当在设计器中打开子(派生)表单时,将显示基本表单控件并显示为已锁定.
现在,表格只是空白.设计器中不显示任何基本表单控件.一切都编译,构建和运行正常.
有没有人见过这个?
我已尝试在派生形式OnLoad方法中调用基本形式InitializeComponent方法,但无济于事.
我有以下SP
CREATE PROCEDURE [dbo].[GetBaseSixtyTwoString]
@a_number_to_convert int,
@v_temp_val nvarchar(256) output
AS
DECLARE @v_modulo INTEGER;
DECLARE @v_temp_int decimal(38) = @a_number_to_convert;
DECLARE @v_temp_char VARCHAR(1);
DECLARE @c_base62_digits VARCHAR(62) = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ';
IF ( @a_number_to_convert = 0 )
BEGIN
SET @v_temp_val = '5';
END
WHILE ( @v_temp_int <> 0 )
BEGIN
SET @v_modulo = @v_temp_int % 62;
SET @v_temp_char = substring( @c_base62_digits, @v_modulo + 1, 1 );
SET @v_temp_val = @v_temp_char + @v_temp_val;
SET @v_temp_int = floor(@v_temp_int / 62);
END
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
declare @shorturl nvarchar(256)
exec dbo.GetBaseSixtyTwoString …Run Code Online (Sandbox Code Playgroud) 我目前正在调查Google Cloud Functions,并使用typescript编写了一些基本的测试函数.
这些函数按预期工作,我现在正尝试使用Jasmine创建单元测试.(我不是按照文档使用Chai/sinon,因为我的项目的其余部分使用了jasmine).
我有两个问题1)由于此错误,测试未运行
抛出新错误('Firebase配置变量不可用.'+ ^错误:Firebase配置变量不可用.请使用最新版本的Firebase CLI来部署此功能
2)鉴于测试确实运行,我不确定如何测试响应是否符合预期.
索引文件
import * as functions from 'firebase-functions'
import { helloWorldHandler } from './functions/hello-world';
export let helloWorld = functions.https.onRequest((req, res) => {
helloWorldHandler(req, res);
});
Run Code Online (Sandbox Code Playgroud)
正在测试的文件
export let helloWorldHandler = (request, response) => {
response.send("Hello from Firebase Cloud!");
}
Run Code Online (Sandbox Code Playgroud)
规格
import {} from 'jasmine';
import * as functions from 'firebase-functions'
import { helloWorldHandler } from './hello-world';
import * as endpoints from '../index';
describe('Cloud Functions : Hello World', () => {
let configStub …Run Code Online (Sandbox Code Playgroud) angular ×1
c# ×1
firebase ×1
function ×1
jasmine ×1
mvp ×1
parameters ×1
sql ×1
sql-server ×1
typescript ×1
winforms ×1