Получение строкового представления типа во времени выполнения в Scala

XAML

<Picker x:Name="picker" Title="Select Country" ItemDisplayBinding="{Binding Name}" >
</Picker>

Используйте это в вашей модели представления

C #

public partial class SamplePage: ContentPage
{
    public ObservableCollection<Country> CountryList { get; set; } = new ObservableCollection<Country>
    {
        new Country{Name = "India" },
        new Country{Name = "Australia" },
        new Country{Name = "UAE" },
        new Country{Name = "USA" },
    };

    public SamplePage()
    {
        InitializeComponent();
        picker.ItemsSource = CountryList;
    }
}

Класс страны

public class Country
{
    public string Name { get; set; }
}
10
задан Kevin Albrecht 10 October 2008 в 07:04
поделиться

3 ответа

Примечание: этот ответ устарел!

См., что ответ использует TypeTag для Scala 2.10 и выше

Позвольте мне рекомендовать #Scala на freenode

10:48 <seet_> http://stackoverflow.com/questions/190368/getting-the-string-representation-of-a-type-at-runtime-in-scala <-- isnt this posible?
10:48 <seet_> possible
10:48 <lambdabot> Title: Getting the string representation of a type at runtime in Scala - Stack Overflow,
                  http://tinyurl.com/53242l
10:49 <mapreduce> Types aren't objects.
10:49 <mapreduce> or values
10:49 <mapreduce> println(classOf[T]) should give you something, but probably not what you want.

Описание classOf

6
ответ дан 3 December 2019 в 18:02
поделиться

Существует новая, главным-образом-недокументированная-функциональность, названная "декларациями" в Scala; это работает как это:

object Foo {
  def apply[T <: AnyRef](t: T)(implicit m: scala.reflect.Manifest[T]) = println("t was " + t.toString + " of class " + t.getClass.getName() + ", erased from " + m.erasure)
}

AnyRef связал, должен просто там гарантировать, что значение имеет .toString метод.

6
ответ дан 3 December 2019 в 18:02
поделиться

Обратите внимание на то, что это не действительно "вещь":

object Test {
    def main (args : Array[String]) {
    println(classOf[List[String]])
    }
}

дает

$ scala Test                    
class scala.List

Я думаю, что можно возложить ответственность за это на стирание

==== ОТРЕДАКТИРУЙТЕ ====, я попытался делать его с методом с универсальным параметром типа:

object TestSv {
  def main(args:Array[String]){
    narf[String]
  }
  def narf[T](){
    println(classOf[T])
  }
}

И привычка компилятора принимает его. Типы arn't классы являются объяснением

2
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: