Доступ к классу в другом пространстве имен, но в том же решении [дубликат]

К сожалению, нет «предыдущего» селектора, но вы можете , возможно, получить тот же эффект, используя позиционирование (например, float right). Это зависит от того, что вы пытаетесь сделать.

В моем случае я хотел получить первую 5-звездочную рейтинговую систему CSS. Мне нужно было бы покрасить (или поменять значок) предыдущих звезд. Если плавать каждый элемент вправо, я по сути получаю тот же эффект (html для звезд, таким образом, должен быть записан «назад»).

Я использую FontAwesome в этом примере и заменяю между юникодами fa -star-o и fa-star http://fortawesome.github.io/Font-Awesome/

CSS:

.fa {
    display: inline-block;
    font-family: FontAwesome;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* set all stars to 'empty star' */
.stars-container {
    display: inline-block;      
}   

/* set all stars to 'empty star' */
.stars-container .star {
    float: right;
    display: inline-block;
    padding: 2px;
    color: orange;
    cursor: pointer;

}

.stars-container .star:before {
    content: "\f006"; /* fontAwesome empty star code */
}

/* set hovered star to 'filled star' */
.star:hover:before{
    content: "\f005"; /* fontAwesome filled star code */
}

/* set all stars after hovered to'filled star' 
** it will appear that it selects all after due to positioning */
.star:hover ~ .star:before {
    content: "\f005"; /* fontAwesome filled star code */
}

HTML: (40)

JSFiddle: http://jsfiddle.net/andrewleyva/88j0105g/

61
задан Brandon 18 August 2010 в 14:00
поделиться

4 ответа

Вам нужно добавить имя сборки следующим образом:

Type.GetType("MyProject.Domain.Model." + myClassName + ", AssemblyName");

Чтобы избежать двусмысленности или если сборка находится в GAC, вы должны предоставить полное имя сборки, например:

Type.GetType("System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
126
ответ дан Sandor Drieënhuizen 18 August 2018 в 20:11
поделиться
  • 1
    Отлично, я знал, что мне не хватает чего-то второстепенного, такого как сборка. Это решение работало для моих нужд. Благодарю. – Brandon 18 August 2010 в 14:21
  • 2
    И для тех, кто занимается сериализацией: для получения имени с квалификацией сборки существует свойство Type.AssemblyQualifiedName – Michael Wild 16 April 2014 в 10:28
  • 3
    Если тип - это List & lt; T & gt; , где T - пользовательский класс, как вы указываете 2 сборки? I.e. Сборка mscorlib для System.Collections.Generic.List и библиотека, содержащая T? – Simon Green 19 June 2017 в 10:38
  • 4
    @SimonGreen: вам, вероятно, придется построить его с помощью listType.MakeGenericType(itemType). Обе переменные типа могут быть построены с использованием Type.GetType(), как в моем ответе. – Sandor Drieënhuizen 23 June 2017 в 10:35
  • 5

Сначала загрузите сборку, а затем тип. ex: Assembly DLL = Assembly.LoadFile (PATH); DLL.GetType (TypeName);

1
ответ дан azulay7 18 August 2018 в 20:11
поделиться

Можете ли вы использовать любой из стандартных способов?

typeof( MyClass );

MyClass c = new MyClass();
c.GetType();

Если нет, вам нужно будет добавить информацию в Type.GetType о сборке.

1
ответ дан Jerod Houghtelling 18 August 2018 в 20:11
поделиться

Короткий и динамический подход с использованием свойства AssemblyQualifiedName -

Type.GetType(Type.GetType("MyProject.Domain.Model." + myClassName).AssemblyQualifiedName)
0
ответ дан simonbor 18 August 2018 в 20:11
поделиться
  • 1
    Если Type.GetType («MyProject.Domain.Model.» + MyClassName) завершается с ошибкой, как можно его обернуть другим вызовом GetType? – Kaine 1 May 2018 в 14:33
  • 2
Другие вопросы по тегам:

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