C# 有人能解释一下这段MVVM代码吗
我正在尝试这个MVVM的东西,并且正在发表John Shews()的博客文章。我想除了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
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;}
将fromNotificationBase
添加到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;}
将fromNotificationBase
添加到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此人说:“有人能给我一行一行地描述一下这段代码吗?有一大堆事情我无法处理。”。我只是假设这是他们想要的:-)。