Если у вас есть локальная переменная с именем, совпадающим с типом, есть ли способ сообщить компилятору, что указанный вами символ является типом или переменной? Например, рассмотрим (и игнорируем все ошибки возврата типа):
public class sometype { public static sometype DoSomething() {} }
public string sometype { get { return sometype.DoSomething(); } } //A
public string sometype { get { return sometype.Trim(); } } //B
public sometype sometype { get { return sometype.DoSomething(); } } //C
public sometype sometype { get { return sometype.Trim(); } } //D
- A -> Ошибка (без метода DoSomething ())
- B -> Работы
- C -> Работы
- D -> ошибка (без метода Trim ())
С более аппликативной точки зрения
(вы можете пропустить это, если XSD вам надоедает):
В настоящее время я пытаюсь заставить работать LINQ to XSD.
В моем XSD-файле есть такие элементы xs: *: 1018 *
<xs:element name="car" type="car">
Где тип 'car' определяется как простой тип, подобный этому
(возможно, еще некоторые ограничения, но это по сути):
<xs:simpleType name="car">
<xs:restriction base="xs:string" />
</xs:simpleType>
Естественно, LINQ to XSD генерирует код, который выглядит следующим образом:
public string car {
get {
XElement x = this.GetElement(XName.Get("car", ""));
return XTypedServices.ParseValue<string>(x, XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.String).Datatype);
}
set {
this.SetElementWithValidation(XName.Get("car", ""), value, "car", car.TypeDefinition);
}
}
Но это не скомпилируется из-за вышеупомянутой проблемы.