何时使用x:Object?

flu*_*ter 5 c# xaml xamarin xamarin.forms

当将标记扩展名的参数传递x:Argumentsdocs指定的非默认构造函数时,我可以看到使用诸如x:Int32或的具体数据类型x:String,但是的用例是x:Object什么?而且,要使用它,应在标签之间放置什么?<x:Object> ??? </x:Object>

对于整数或字符串,很自然地将它们视为变量分配,然后将变量传递给构造函数。但是对于而言Object,这样的变量通常是由另一个用户定义的类构造的,那么如何指定要创建的类呢?

Evk*_*Evk 3

从技术上讲,您可以x:Object作为构造函数参数传递。x:Object对应于System.Object有默认构造函数。所以如果你有

 public class MyClass {
     public MyClass(object arg) {

     }
 }
Run Code Online (Sandbox Code Playgroud)

你可以这样构造它:

<my:MyClass>
  <x:Arguments>
    <x:Object />
  </x:Arguments>
</my:MyClass>
Run Code Online (Sandbox Code Playgroud)

但这不太有用,因为它对应于

new MyClass(new object());
Run Code Online (Sandbox Code Playgroud)

由于Object没有任何其他构造函数 - 您无法以任何其他有意义的方式构造它。因此,当构造函数需要对象类型的参数时 - 您不想使用x:Object而是实际类型:

<my:MyClass>
  <x:Arguments>
    <x:String>string</x:String>
  </x:Arguments>
</my:MyClass>
Run Code Online (Sandbox Code Playgroud)

这对应于

new MyClass("string");
Run Code Online (Sandbox Code Playgroud)