C# 有人能解释一下这段MVVM代码吗

C# 有人能解释一下这段MVVM代码吗,c#,mvvm,uwp,C#,Mvvm,Uwp,我正在尝试这个MVVM的东西,并且正在发表John Shews()的博客文章。我想除了NotificationBase文件中的一小部分之外,我了解大部分情况 这是我难以理解的部分 public class NotificationBase<T> : NotificationBase where T : class, new() { protected T This; public static implicit operator T(NotificationBase

我正在尝试这个MVVM的东西,并且正在发表John Shews()的博客文章。我想除了
NotificationBase
文件中的一小部分之外,我了解大部分情况

这是我难以理解的部分

public class NotificationBase<T> : NotificationBase where T : class, new()
{
    protected T This;

    public static implicit operator T(NotificationBase<T> thing) { return thing.This; }

    public NotificationBase(T thing = null)
    {
        This = (thing == null) ? new T() : thing;
    }
}
公共类NotificationBase:NotificationBase,其中T:class,new()
{
保护这一点;
公共静态隐式运算符T(NotificationBase thing){return thing.This;}
公共通知库(T thing=null)
{
This=(thing==null)?新的T():thing;
}
}

有人能给我一行一行地描述一下这个代码吗?有一大堆事情我不能很好地理解。

这些概念中的大多数都在中得到了很好的解释

有了这些,我将尝试解释每一行,如下所示:

公共类NotificationBase:NotificationBase,其中T:class,new()
声明名为
NotificationBase
的新类,该类具有单个泛型类型参数(
T
)。它派生自类
NotificationBase
(非泛型版本)。它对类型参数有两个约束;它必须是
(即引用类型,而不是枚举或其他整数类型),并且必须有一个可见的空构造函数(由
new()
约束指定)

对此进行保护;
声明名为This的字段。可以在此类实例和派生对象中使用该字段

public静态隐式运算符T(NotificationBase thing){return thing.This;}
将from
NotificationBase
添加到
T
,以便您可以执行以下操作(示例):

NotificationBase myWrappedString=新的NotificationBase(“Heya”);
字符串myString=myWrappedString;
//由于上面声明了隐式运算符,因此支持隐式转换。
public NotificationBase(T thing=null)
{
This=(thing==null)?新的T():thing;
}

声明公共构造函数,以便可以创建
NotificationBase
的实例。如果输入为
null
,构造函数将只
new
创建一个类型为
T
的对象(不管它是什么,只要它有一个空构造函数)。(
谓词?then:else
)用于在分配给
This
字段时使代码紧凑且可读。

这些概念中的大多数在中都有很好的解释

有了这些,我将尝试解释每一行,如下所示:

公共类NotificationBase:NotificationBase,其中T:class,new()
声明名为
NotificationBase
的新类,该类具有单个泛型类型参数(
T
)。它派生自类
NotificationBase
(非泛型版本)。它对类型参数有两个约束;它必须是
(即引用类型,而不是枚举或其他整数类型),并且必须有一个可见的空构造函数(由
new()
约束指定)

对此进行保护;
声明名为This的字段。可以在此类实例和派生对象中使用该字段

public静态隐式运算符T(NotificationBase thing){return thing.This;}
将from
NotificationBase
添加到
T
,以便您可以执行以下操作(示例):

NotificationBase myWrappedString=新的NotificationBase(“Heya”);
字符串myString=myWrappedString;
//由于上面声明了隐式运算符,因此支持隐式转换。
public NotificationBase(T thing=null)
{
This=(thing==null)?新的T():thing;
}

声明公共构造函数,以便可以创建
NotificationBase
的实例。如果输入为
null
,构造函数将只
new
创建一个类型为
T
的对象(不管它是什么,只要它有一个空构造函数)。(
谓词?then:else
)用于在分配给
字段时使代码紧凑且可读。

第一:第二:和第三,如果需要,第一:第二:和第三,如果需要,可能他不理解MVVM上下文,并且非常理解泛型等单一语言元素。@UweKeim此人说:“有人能给我一行一行的描述这段代码吗?有很多东西我都不太懂。”。我只是假设这是他们想要的:-)。可能他不了解MVVM上下文,并且非常了解泛型等单一语言元素。@UweKeim此人说:“有人能给我一行一行地描述一下这段代码吗?有一大堆事情我无法处理。”。我只是假设这是他们想要的:-)。