gpt4 book ai didi

c# - 从共享某些部分的 2 个接口(interface)实现一个类

转载 作者:太空狗 更新时间:2023-10-29 22:28:13 27 4
gpt4 key购买 nike

以下不是一个好的做法吗?

public interface IMyImmutableData
{
int Data { get;}
}

public interface IMyMutableData
{
int Data { set;get;}//implements both get and set
}

public class MyData : IMyImmutableData, IMyMutableData
{
public int Data{get;set;} //implements both IMyImmutableData, IMyMutableData
}

void Main()
{
MyData myData = new MyData{Data=10};
Console.WriteLine(myData.Data);
}

我问的原因是 resharper 给我以下警告:“通过此接口(interface)访问时可能存在歧义”

我想要执行上述操作的原因是,当我创建使用 MyData 类的方法时,我想将它作为 IMyMutable 或 IMyImmutable 对象发送,以便该方法的用户知道他们可以期望该方法更新或不更新传入的对象。

最佳答案

我认为您可以忽略 resharper 的警告,因为歧义是故意的。

但是,通常包装类用于提供对某些内容的只读访问,这样它就不能转换为提供更多功能的任何内容。

public class MyReadonlyData : IMyReadonlyData {
private MyData instance;

public int Data {
get {
return instance.Data;
}
}

public MyReadonlyData( MyData mydata ) {
instance = mydata;
}
}
// no access to original object or setters, period.

关于c# - 从共享某些部分的 2 个接口(interface)实现一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194542/

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