在 public 方法中使用内部 class
use internal class in public method
嗨,我正在创建一个库。我有一个内部可访问的模型 class 和一个 public.
的方法
我知道由于访问级别的原因,内部访问不能用于public
如果我让模型class访问public,当用户使用库时,他可以访问方法和模型class
我希望用户只能访问该方法
public class GithubReleaseModel
{
public bool IsExistNewVersion { get; set; }
public string Url { get; set; }
public string Changelog { get; set; }
public string Version { get; set; }
public string DownloadUrl { get; set; }
public string Size { get; set; }
public bool IsPreRelease { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime PublishedAt { get; set; }
}
public static GithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}
如果您只想让外部用户无法更改属性,请将设置器设为内部:
public bool IsExistNewVersion { get; internal set; }
这样每个人都可以阅读,但您只能从程序集(您的库)内部编写。
编辑
如果您不希望库的用户创建您的 class 的实例,请限制对构造函数的访问:
public class GithubReleaseModel
{
internal GithubReleaseModel()
{
// internal constructor
}
public bool IsExistNewVersion { get; set; }
public string Url { get; set; }
public string Changelog { get; set; }
public string Version { get; set; }
public string DownloadUrl { get; set; }
public string Size { get; set; }
public bool IsPreRelease { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime PublishedAt { get; set; }
}
public static GithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}
通过这种方式您可以像以前一样创建和 return 您的模型,但是如果外部人员想要创建一个 new GithubReleaseModel()
他会遇到访问冲突。
如果您的意思是您不希望库的使用者实例化您的模型,您可以创建构造函数 private
或 internal
.
示例:
public class GithubReleaseModel
{
private GithubReleaseModel()
{
}
// ...
}
用消费者方法可以调用的方法定义一个接口。您的实现 class 可以保持 internal
那种方式而不暴露任何东西。
public interface IGithubReleaseModel {
int DoSomethingYouWant();
}
internal class GithubReleaseModel : IGithubReleaseModel {
public int DoSomethingYouWant() {
return 42;
}
}
public static IGithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}
嗨,我正在创建一个库。我有一个内部可访问的模型 class 和一个 public.
的方法我知道由于访问级别的原因,内部访问不能用于public
如果我让模型class访问public,当用户使用库时,他可以访问方法和模型class 我希望用户只能访问该方法
public class GithubReleaseModel
{
public bool IsExistNewVersion { get; set; }
public string Url { get; set; }
public string Changelog { get; set; }
public string Version { get; set; }
public string DownloadUrl { get; set; }
public string Size { get; set; }
public bool IsPreRelease { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime PublishedAt { get; set; }
}
public static GithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}
如果您只想让外部用户无法更改属性,请将设置器设为内部:
public bool IsExistNewVersion { get; internal set; }
这样每个人都可以阅读,但您只能从程序集(您的库)内部编写。
编辑
如果您不希望库的用户创建您的 class 的实例,请限制对构造函数的访问:
public class GithubReleaseModel
{
internal GithubReleaseModel()
{
// internal constructor
}
public bool IsExistNewVersion { get; set; }
public string Url { get; set; }
public string Changelog { get; set; }
public string Version { get; set; }
public string DownloadUrl { get; set; }
public string Size { get; set; }
public bool IsPreRelease { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime PublishedAt { get; set; }
}
public static GithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}
通过这种方式您可以像以前一样创建和 return 您的模型,但是如果外部人员想要创建一个 new GithubReleaseModel()
他会遇到访问冲突。
如果您的意思是您不希望库的使用者实例化您的模型,您可以创建构造函数 private
或 internal
.
示例:
public class GithubReleaseModel
{
private GithubReleaseModel()
{
}
// ...
}
用消费者方法可以调用的方法定义一个接口。您的实现 class 可以保持 internal
那种方式而不暴露任何东西。
public interface IGithubReleaseModel {
int DoSomethingYouWant();
}
internal class GithubReleaseModel : IGithubReleaseModel {
public int DoSomethingYouWant() {
return 42;
}
}
public static IGithubReleaseModel IsNewVersionExistGithub(string Username, string Repository)
{
var model = new GithubReleaseModel();
...
return model;
}