我一直在搜索,无法弄清楚如何做到这一点。 我正在尝试阅读包含
等内容的文本文件x 4
y 6
z 9
并将int值设置为之前对应的变量名; 无论如何要做到这一点,或者我必须在读取值后在程序中指定名称。
答案 0 :(得分:2)
您可以使用几种方法将数据导入与名称关联的程序,具体取决于程序的结构。
如果您的程序中不包含带有这些名称的变量,则无法从文件生成变量。您可以创建一个将名称映射到值的字典,并将其用作“变量”。
我想你也可以有一个字典,将名字映射到现有变量的地址......这样你就可以查找名称然后解析变量来设置它是否在字典中。
作为一个非常广泛的解决方案......如果每次有新文件都可以重新编译(即文件真的是编译时输入,而不是运行时输入)那么你可以使用一些对#include
(可能本身预处理成c代码)数据文件进行预处理。
答案 1 :(得分:0)
我认为你要求动态代码生成器那些我当时用于不同目的(生成具有特定值的长字节数组)。生成器将生成一个 public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppIdentityDbContext>(options =>
options.UseMySql(configuration["DB_CONN"]));
services.AddIdentity<AppIdentityUser, AppIdentityRole>()
.AddEntityFrameworkStores<AppIdentityDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = "******.apps.googleusercontent.com";
googleOptions.ClientSecret = "******";
googleOptions.SaveTokens = true;
googleOptions.AccessType = "offline";
});
services.Configure<IdentityOptions>(options =>
{
options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+ ";
options.Lockout.AllowedForNewUsers = true;
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.User.RequireUniqueEmail = true;
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = "/Security/Login";
options.LogoutPath = "";
options.AccessDeniedPath = "/Security/AccessDenied";
options.SlidingExpiration = true;
options.Cookie = new CookieBuilder
{
HttpOnly = true,
Name = ".Test",
Path = "/",
SameSite = SameSiteMode.Lax,
SecurePolicy = CookieSecurePolicy.SameAsRequest
};
});
services.AddMvc();
}
public void Configure(
IApplicationBuilder app,
IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseMvcWithDefaultRoute();
}
文件,其中包含从另一个文件读取的变量名称。这个问题是,运行时很难做到这一点,如果你要求运行时解决方案,其他人已经给出了答案。