Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将方法重构为泛型方法_Vb.net_Mvvm - Fatal编程技术网

Vb.net 将方法重构为泛型方法

Vb.net 将方法重构为泛型方法,vb.net,mvvm,Vb.net,Mvvm,我有一个恰当的工作方法: Public Shared Function Create(panelName As String, panelCaption As String) As ViewModelA Return ViewModelSource.Create(Function() New ViewModelA() With { .Name = panelName, .Caption = panelCaption }) End Function

我有一个恰当的工作方法:

Public Shared Function Create(panelName As String, panelCaption As String) As ViewModelA
    Return ViewModelSource.Create(Function() New ViewModelA() With {
        .Name = panelName,
        .Caption = panelCaption
    })
End Function
它创建并返回ViewModelA类型的对象及其属性名称和标题

(注意:ViewModelSource.Create是3d party MVVM框架的一个方法,它返回给定POCO类的实例(此处:ViewModelA))

有几个ViewModel需要这种方法,每个ViewModel实际上都有自己的方法。此方法仅在类型(ViewModelA、ViewModelB、ViewModelC…)上有所不同

我想要实现的只是一个泛型方法,它返回作为参数给定类型的对象,如下面的幻想代码:

Public Shared Function Create(Of T)(panelName As String, panelCaption As String) As T
    Return ViewModelSource.Create(Function() New T With {
        .Name = panelName,
        .Caption = panelCaption
    })
End Function
使用这样的方法:

Dim vmA As ViewModelA = Create(Of ViewModelA)("myName", "myCaption")

听起来您正在谈论的是。

为什么需要
Create
方法?您知道类型
ViewModelA
和所需值-因此您可以使用
newviewmodela和{.Name=“Name”,.Caption=“Caption”}
MVVM框架(DevExpress MVVM)需要使用ViewModelSource创建ViewModels。创建方法可以利用此框架的优势。