小编Sia*_*dos的帖子

清除代码以删除开关条件(使用多态)

正如SOLID原则所说,最好通过将切换条件转换为类和接口来删除它们.我想用这段代码做:

注意:这段代码不是真正的代码,我只想把它放进去.

MessageModel message = getMessageFromAnAPI();
manageMessage(message);
...
void manageMessage(MessageModel message){        
    switch(message.typeId) {
        case 1: justSave(message); break;
        case 2: notifyAll(message); break;
        case 3: notify(message); break;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想删除switch语句.所以我为它创建了一些类,我尝试在这里实现一个多态:

interface Message{
    void manageMessage(MessageModel message);
}
class StorableMessage implements Message{

    @Override
    public void manageMessage(MessageModel message) {
        justSave(message);
    }
}
class PublicMessage implements Message{

    @Override
    public void manageMessage(MessageModel message) {
        notifyAll(message);
    }
}
class PrivateMessage implements Message{

    @Override
    public void manageMessage(MessageModel message) {
        notify(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我调用我的API来获取我的MessageModel:

MessageModel message = getMessageFromAnAPI(); …
Run Code Online (Sandbox Code Playgroud)

java open-closed-principle solid-principles

14
推荐指数
3
解决办法
4495
查看次数

通过PartialView方法返回视图

我想使用Ajax来防止刷新我的网页,并为了这个,我想返回 查看PartialView从法控制器上的ajax调用.

问题是:

  1. 返回Viewas 是好方法PartialView吗?
  2. 我该如何设置PartialView方法中的视图路径Controller

例如,对于在_index视图查看/ BasicInfo/_index路径,我尝试 PartialView("~/Views/BasicInfo/_Index");, PartialView("~/Views/BasicInfo/_Index.chtml");,PartialView("BasicInfo/_Index"); ,并得到误差找不到视图

编辑

如何将视图名称指定为PartialView方法,如果视图位于共享文件夹之外的文件夹中并且超出相关视图文件夹.例如,我的控制器名称是controller1,我的View在此路径中是Views/BasicInfo/_Index

c# asp.net-mvc

12
推荐指数
3
解决办法
7139
查看次数

PartialView方法中的路径(在应用程序之间共享它们)

我想在一些应用程序之间共享一些部分视图.我尝试了在互联网上建议的不同解决方案,但没有一个不起作用!但我希望通过在PartialView方法中使用绝对或关系路径它可以工作,但我不知道是否可能.

所以这里有两个问题:

  1. 如果我在我的解决方案中创建一个公共项目作为子域,我可以在其他项目的方法中使用它的URLPartialView吗?
  2. 如果我在我的解决方案中创建公共文件夹,我会使用类似的路径"~/../Common/myView.cshtml".在这种情况下,Visual Studio在运行时没有在编辑器上出错我遇到错误("不能使用前导..退出顶层目录").那么在根之外使用公共文件夹的路径的任何解决方案是什么?

我知道将这些问题分成2个问题更好,但由于没有解决方案来分享部分观点,所以我在这里收集它们.

正如您所看到的,我的解决方案中包含一个Common文件夹,_MainMenu.cshtml并且我也在网站项目的共享文件夹中有此文件.

我应该如何在Admin控制器中编写PartialView以获取每个部分的路径?

我想要一些这样的代码:

对于Common文件夹:

return PartialView("~/../Common/_MainMenu.cshtml");

对于共享文件夹:

return PartialView("http://localhost:16287/Module/Menu/_MainMenu");

在此输入图像描述

asp.net-mvc

11
推荐指数
1
解决办法
236
查看次数

如何从Android Room中的多个数据库中选择(如何附加数据库)

如您所知,我们可以使用attach命令从多个数据库中选择,如下所示:

String path = DBHelper.getDatabasePath(context);
String sql = "ATTACH DATABASE '" + path + "/" + dbname.toString()
                + ".db' AS \"" + dbname.toString() + "\";";
db.execSQL(sql);
Run Code Online (Sandbox Code Playgroud)

然后通过使用Cursor,我们可以从中进行选择.

通过使用Android Room,我该怎么做?是否有任何附件或类似命令来执行此操作?

java sqlite android android-room android-architecture-components

10
推荐指数
2
解决办法
3006
查看次数

按属性名称(字符串值)排序列表?

我有一份清单object.如何使用属性名称订购此列表?

string orderbyField = "Code";
List<object> l = FillList();
l = l.OrderBy(o => orderbyField);
Run Code Online (Sandbox Code Playgroud)

我可以为此问题进行扩展吗?

c# linq

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

如何将WPF英寸单位转换为Winforms像素,反之亦然?

我有一个在WPF设计的窗口,我在WinForms所有者的中心使用它.现在,我想移动所有者表单,此时我的WPF窗口也要移动到表单的中心!

但我有一个问题,只有当窗口位于屏幕中心形成的窗体的中心时.否则以不同于Windows坐标的形式运行.我只是将窗体的位移值添加到窗口位置.

现在我得出结论,WPF Windows上像素的坐标因WinForms而异!

如何将WPF窗口位置转换为WinForms基本位置,反之亦然?

所有者表格代码是:

public partial class Form1 : Form
{
    private WPF_Window.WPF win;

    public Form1()
    {
        InitializeComponent();

        win = new WPF();
        win.Show();
        CenterToParent(win);
    }

    private void CenterToParent(System.Windows.Window win)
    {
        win.Left = this.Left + (this.Width - win.Width) / 2;
        win.Top = this.Top + (this.Height - win.Height) / 2;
    }

    protected override void OnMove(EventArgs e)
    {
        base.OnMove(e);
        CenterToParent(win);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf pixel winforms

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

如何在java中的方法中使用泛型T?

我们可以在C#中做到这一点:

private T getData<T>(Context context, String url, PostModel postModel) throws ApiException, IOException, ConnectionException {
    Response response = new CallApi<T>(Connection.getApiUrl(context))
            .Post(url, postModel);    
    if (response.code() != 200) throw new ApiException(context,response);

    Gson gson = new GsonBuilder()
            .setLenient()
            .create();
    T obj = gson.fromJson(response.body().charStream(),
            new TypeToken<T>() {
            }.getType());
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

致电:

EmployeeModel model =  getData<EmployeeModel>(context, url, null);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的T那样,我们在方法签名中声明并在方法内部,将其替换为EmployeeModelin CallApi<T>new TypeToken<T>,它将返回EmployeeModel对象作为结果.

在Java(Android)中,当我想使用这个泛型时,我有:

private <T> T getData(Context context, String url, PostModel postModel){...}
Run Code Online (Sandbox Code Playgroud)

但它给我一个LinkedTreeMap对象,而不是一个EmployeeModel!当我将<T>从方法签名移动到类本身时,结果也一样. …

java generics android

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

如何从对象类型定义泛型类型?

我有一个扩展方法:

public static List<object> ToModelViewObjectList<ModelViewType>(this IEnumerable<object> source)
{

    List<ModelViewType> destinationList = new List<ModelViewType>();

    PropertyInfo[] ModelViewProperties = typeof(ModelViewType).GetProperties();
    foreach (var sourceElement in source)
    {
        object destElement = Activator.CreateInstance<ModelViewType>();
        foreach (PropertyInfo sourceProperty in sourceElement.GetType().GetProperties())
        {

            if (ModelViewProperties.Select(m => m.Name).Contains(sourceProperty.Name))
            {
                destElement.GetType().GetProperty(sourceProperty.Name).SetValue(destElement, sourceProperty.GetValue(sourceElement));
            }
        }
        destinationList.Add((ModelViewType)destElement);
    }

    return destinationList.Cast<object>().ToList();
}
Run Code Online (Sandbox Code Playgroud)

我有一个方法,其中包含一个对象列表,我希望在此方法中使用调用扩展方法:

public void GridModel(IEnumerable<object> GridDataSource)        
{ 
   List<object> list = GridDataSource.ToModelViewObjectList<GridDataSource[0].GetType()>();
}
Run Code Online (Sandbox Code Playgroud)

我应该写什么而不是GridDataSource [0] .GetType()?

编辑:

我有一个带对象参数的方法.我想创建一个对象类型的通用列表.

public void CreateListByNonGenericType(object myObject)
{
    Type objType = myObject.GetType();

    var lst = System.Collections.Generic.List < objType.MakeGenericType() > (); …
Run Code Online (Sandbox Code Playgroud)

c# generics extension-methods

4
推荐指数
2
解决办法
357
查看次数

LiveData(MutableLiveData)和数据绑定上升错误(无法调用观察器方法)

我有一个使用ViewModel和MutableLiveData将实时数据绑定到我的UI的应用程序。经过几个小时的时间!并在互联网上查看所有样本,但我找不到问题的原因。

我的活动:

public class DetailActivity extends DaggerAppCompatActivity {
    ActivityStudentBinding mViewDataBinding;    
    MyModel myModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mViewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_student);
        mViewDataBinding.setLifecycleOwner(this);
        myModel = ViewModelProviders.of(this).get(MyModel.class);
        mViewDataBinding.setViewmodel(myModel);
    }
Run Code Online (Sandbox Code Playgroud)

我的模型课:

public class MyModel extends ViewModel
{
    public MutableLiveData<StudentData.Student> student = new MutableLiveData<>();

    public MyModel() {
        this.student=student;
        StudentData.Student student = new StudentData().getFirstStudent();
        this.student.setValue(student);
    }    
}
Run Code Online (Sandbox Code Playgroud)

和布局(我在这里清理了多余的代码):

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data >
        <variable
             name="viewmodel"
            type="googlearchitecturecomponents.ferdos.com.dagger211.detail.MyModel"/>
    </data>
        <TextView               
            android:text="@{viewmodel.student.id}" />    
        <TextView
            android:text="@{viewmodel.student.family}" />    
        <TextView
            android:text="@{viewmodel.student.id}"/>    
</layout>
Run Code Online (Sandbox Code Playgroud)

在运行时和创建活动时,出现以下错误:

java.lang.RuntimeException:无法启动活动ComponentInfo {googlearchitecturecomponents.ferdos.com.dagger211 …

android viewmodel android-viewholder android-livedata mutablelivedata

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

Redux 教程示例中 counterReducer 是如何生成的

我正在阅读 Redux 官方教程。当我看到counterReducer任何模块中都没有有价值且有效的功能时,我感到很惊讶!我找不到它的任何描述,但是:

因为我们知道 counterReducer 函数来自 features/counter/counterSlice.js,所以让我们逐个查看该文件中的内容。

我什至将切片器的名称更改为 counter3,但它仍然有效!

谁能向我描述一下它是如何生成的?

counterSlice.js

import { createSlice } from '@reduxjs/toolkit';
export const counterSlice = createSlice({
  name: 'counter3',
  initialState: {
    value: 0,
  },
  reducers: {
    increment: state => {
      state.value += 1;
    },
    decrement: state => {
      state.value -= 1;
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload;
    },
  },
});

export const { increment, decrement, incrementByAmount } = counterSlice.actions;

export const incrementAsync = amount => dispatch => {
  setTimeout(() …
Run Code Online (Sandbox Code Playgroud)

redux

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

如何将负值转换为零

    SELECT  name ,
        ( SUM(CASE WHEN TransTypeName LIKE 'credit%' THEN amount
                   ELSE 0
              END) - SUM(CASE WHEN TransTypeName LIKE 'Debit%' THEN amount
                              ELSE 0
                         END) ) * 5 / 100 AS Interest
    FROM .....
Run Code Online (Sandbox Code Playgroud)

此查询返回一些负值,我想将负值转换为零.如何编写查询

sql sql-server sql-server-2008

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

导入打字稿时如何在路径中使用变量

是否可以将变量(或常量)放入路径而不是将整个路径写为字符串文字。看起来,angular 除了字符串文字外不接受任何内容。

import aClass = require("./simpleClass"); 
import { aComponent } from aClass.myClass.Root + 'tutorial.component';
Run Code Online (Sandbox Code Playgroud)

我的课:

export class myClass{    
    public static Root = "./"
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中aClass.myClass.Root + 'tutorial.component'有解释的错误

javascript typescript angular

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