型と同じ名前のローカル変数がある場合、指定したシンボルが型または変数であることをコンパイラに伝える方法はありますか? たとえば、次のことを考慮してください (すべての型戻りエラーを無視します)。
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:elements があります。
<xs:element name="car" type="car">
「car」タイプが次のように simpleType として定義されている場合
(おそらくいくつかの制限がありますが、本質的にはこれです):
<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);
}
}
しかし、これは前述の問題によりコンパイルされません。