gpt4 book ai didi

c# - 这是处理泛型独特属性的好方法吗?

转载 作者:行者123 更新时间:2023-11-30 15:46:05 24 4
gpt4 key购买 nike

我有一个泛型类,它表示当前只有两种类型的文档。类型 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com