我试图使我的所有课程在我的项目内部,只有少数类是公开的,这将是可以从其他项目访问。
"TResponse“是我的模型,它是内部类。我有“保护等级问题,必须公开”的通知。我如何将我的模型隐藏到外部,但仍然设法在内部使用?
internal class _DeserializeResponse<TResponse> where TResponse : IResponsable
{
public TResponse Deserialize(string xmlResponse)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(TResponse));
using (StringReader sr = new StringReader(xmlResponse))
{
var _return = (TResponse)xmlSerializer.Deserialize(sr);
return _return;
}
}
}
编辑*
这是你最好的样品。我注意到我收到了如下所示的通知,即“不一致的可访问性返回类型”"MyModel“比方法"Manager.Test()”更难访问。
显然,我不能从公共方法中返回非公开类。正如我所理解的,实现这一点的唯一方法是MyModel应该是公开的,除非我像Legacy 建议的那样使用属性,否则就无法隐藏它。
using System.Xml.Serialization;
namespace AutoEurope.Concrete
{
internal class Test<TResponse> where TResponse : ITest
{
public TResponse Deserialize(string xmlResponse)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(TResponse));
using (StringReader sr = new StringReader(xmlResponse))
{
var _return = (TResponse)xmlSerializer.Deserialize(sr);
return _return;
}
}
}
internal interface ITest
{
}
internal class MyModel: ITest
{
}
public class Manager
{
public MyModel Test() // inconsistent accessibility return type "MyModel" is less accessible than method "Manager.Test()"
{
var test = new Test<MyModel>();
return test.Deserialize("sample");
}
}
}
发布于 2020-07-01 15:27:50
如果你的意图只是隐藏,但你不会介意有人发现它..。然后我建议使用EditorBrowsableAttribute。
https://stackoverflow.com/questions/62680147
复制相似问题