作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个泛型类,它表示当前只有两种类型的文档。类型 1 或类型 2。大多数方法和属性都适用于这两种类型,但标题不同。我想知道是否有更好的方法来处理这个问题?谢谢!!
[XmlIgnore]
public string DocumentType
{
get
{
return typeof(T).Name;
}
}
[XmlIgnore]
public string DocumentTitle
{
get
{
string retval = string.Empty;
Object obj = Document;
switch (DocumentType)
{
case "Type1":
retval = ((Type1)obj).title.Text;
break;
case "Type2":
retval = ((Type2)obj).Title;
break;
}
return retval;
}
}
Type1 和 Type2 是使用 xsd.exe 生成的,所以我犹豫要不要更改它们,尽管可能会添加一个只读的 xml 忽略属性以使 Type1 和 Type2 中的标题保持一致?
最佳答案
使用通用接口(interface)并在每个类中实现它。如果您不想更改原始类,您可以尝试在每个实现此接口(interface)的类周围添加一个包装器。
interface IHasTitle
{
string Title { get; }
}
class MyType1 : Type1, IHasTitle
{
// Add constructors here.
public string Title { get { return this.title.Text; } }
}
class MyType2 : Type2, IHasTitle
{
// Add constructors here.
}
然后你可以这样做:
[XmlIgnore]
public string DocumentTitle
{
get
{
IHasTitle hasTitle = Document;
return hasTitle.Title;
}
}
您可能希望将接口(interface)扩展到 IDocument
并包括所有其他常见成员,例如 Name
等。
关于c# - 这是处理泛型独特属性的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554497/
我是一名优秀的程序员,十分优秀!