c# - 使用未分配的局部变量“KubeClient”
问题描述
在 C# 控制台应用程序中出现错误。
使用未分配的局部变量“KubeClient”
我尝试在我的应用程序中使用 Kubernetes 客户端。但它与上述错误一起工作。我知道错误是由于未初始化的变量 KubeClient 造成的。但是我在我的 webapi 项目中使用了这种方式。我不明白其中的区别。我如何使用 kubernetes 客户端进行初始化。它显示
由于其保护级别而无法访问
. 请帮帮我?
我的代码是
using k8s;
using k8s.Models;
public bool ReadTLSSecretIteratable(string secretname, string namespacename)
{
V1Secret sec = null;
Kubernetes KubeClient;
try
{
sec = KubeClient.ReadNamespacedSecret(secretname, namespacename);
}
catch (Microsoft.Rest.HttpOperationException httpOperationException)
{
var content = httpOperationException.Response.Content;
Console.WriteLine(content);
throw httpOperationException;
}
retrun true;
}
解决方案
如果您的变量未分配,您将得到“使用未分配的变量错误”。这是这里的情况:
Kubernetes KubeClient;
KubeClient 变量没有赋值。如果你写:
Kubernetes KubeClient = null;
比编译时错误会消失,因为现在该值为 NULL。但这并不能解决问题,因为显然您不能在为空(没有值)的变量上调用方法,并且在运行时会出现空引用异常。
初始化变量的常规方法是使用 new:
Kubernetes KubeClient = new Kubernetes([pass constructor parameters]);
有时有一些静态工厂方法会进行复杂的初始化:
Kubernetes KubeClient = Kubernetes.Create([pass constructor parameters]);
最后是依赖注入,我猜 webapi 项目就是这种情况。您使用依赖容器注册类型,而不是在需要时通过构造函数或有时通过属性获取它们:
public class MyClass
{
public MyClass(Kubernetes k)
{
// Kubernetes is passed by DI container without new keyword.
}
}
请执行下列操作:
- 阅读 C# 中的类初始化,理解它是至关重要的(首先是类(C# 编程指南))
- 阅读一般和 .net 核心中的依赖注入,这非常重要(例如.NET 中的依赖注入)
- 阅读 Kubernetes 库的文档,应该有关于如何正确初始化它的示例和说明
推荐阅读
- jquery - Linked Owl Carousels - 1 控制另一个
- android - 为什么strings.xml 和styles.xml 中没有DTD?
- r - 调整 x 轴日期以匹配(“财政”)年的开始
- python - 无法让多个 uwsgi 工作人员使用 flask-socketio
- c# - 从 LINQ 查询填充 MVC C# 中的模型的不同方法?
- neo4j - Neo4j 使用 FROM CSV 同时创建节点和关系
- visual-studio-code - 如何在同一窗口中从 VSCode 文件资源管理器中打开文件
- ios - 全屏视图在 HStack 和水平滚动视图中不起作用
- sql - Sql Server 联名账户记录查询
- json - 如何在json数组中动态添加对象?