我想知道,有没有办法ToString()
用类型覆盖类字段的方法byte[]
?我甚至不确定它是否可能......以下是示例代码:
public class Object
{
private byte[] _content;
public byte[] Content
{
get
{
return _content;
}
internal set
{
_content = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以覆盖Object.Content.ToString()
方法的调用方式?
编辑:我为什么需要它?我想这Content
可能是纯二进制数据,但它也可以是纯字符串.Encoding.UT8.GetString(Object.Content)
如果我需要文字表示,我会使用以防万一!但是嘿!怎么样ToString()
才能完美地符合我的目标,也许我能以某种方式使用它?
明显的方法是突然出现 - 创建一个包装byte[]
并覆盖它,ToString()
但这对我来说看起来很难看,我觉得不值得.
有没有优雅的方法来解决这个问题?或者解决它?
提前谢谢了!
不,你不能一般地覆盖或替换ToString()
字节数组或Content
属性的实现.为了得到你想要的结果,你可能需要包装你已经说过你不想做的数组.
您还可以在类中提供另一个属性以有效地隐藏Content
属性,例如
public string ContentAsString
{
get
{
return /* custom string output of this.Content here */
}
}
Run Code Online (Sandbox Code Playgroud)
另一个选择是扩展字节数组(通过扩展方法)以提供字符串转换的自定义实现(并使用不同的名称)(与上面相同的想法,表达方式不同)
static class MyExtensions
{
public static string ToCustomString(this byte[] array)
{
return ...
}
}
string result = obj.Content.ToCustomString();
Run Code Online (Sandbox Code Playgroud)