使用未赋值的局部变量'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 ;
var config = KubernetesClientConfiguration.InClusterConfig();
//for local testing BuildDefaultConfig && for cluster testing InClusterConfig
KubeClient = new Kubernetes(config);

如果你的变量没有赋值,你会得到"using unassigned variable error"下面的例子是:

Kubernetes KubeClient;

KubeClient变量没有分配值。如果你写:

Kubernetes KubeClient = null;

的编译时错误就会消失,因为现在值是NULL。但这并不能解决问题,因为显然你不能在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#中的类初始化,理解它是至关重要的(classes (c# Programming Guide) for a start)
  • 阅读一般和。net核心的依赖注入,它是非常重要的(例如。net中的依赖注入)
  • 阅读Kubernetes库的文档,应该有如何正确初始化它的示例和说明

相关内容

  • 没有找到相关文章

最新更新