Произошла необработанная ошибка
, которая отображается внизу страницы. Я использую Visual Studio 2022 и шаблон автономного приложения Blazor WebAssembly.
Вот что вызывает появление этой ошибки, но я не понимаю, почему. В Program.cs я хочу создать объект, который я добавлю как синглтон, чтобы позже можно было внедрить его на страницы, которым необходим доступ к нему. Показанный здесь код работает нормально:
Код: Выделить всё
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add("#app");
builder.RootComponents.Add("head::after");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
List Portfel = [];
builder.Services.AddSingleton(Portfel);
await builder.Build().RunAsync();
}
Однако, чтобы он работал в Program.cs, мне нужно закомментировать части конструктора, как показано здесь:
Код: Выделить всё
public class Portfolio
{
public string ID { get; private set; }
public string Name { get; private set; }
public decimal Value { get; private set; }
public decimal ValueBankDeposits { get; private set; }
public decimal ValueStocks { get; private set; }
public decimal ValueETFs { get; private set; }
public decimal ValueFunds { get; private set; }
public decimal ValueBondsCorp { get; private set; }
public decimal ValueBondsTreasury { get; private set; }
public List BankDeposits { get; private set; }
public List Stocks { get; private set; }
public List ETFs { get; private set; }
public List Funds { get; private set; }
public List BondsCorp { get; private set; }
public List BondsTreasury { get; private set; }
public Portfolio(string iD, string name)
{
Name = name;
ID = iD;
//BankDeposits = DB.GetPortfolioBankDepositData(ID);
//Stocks = DB.GetPortfolioEquityData(ID);
//ETFs = DB.GetPortfolioETFData(ID);
//Funds = DB.GetPortfolioFundData(ID);
//BondsCorp=DB.GetPortfolioCorpBondData(ID);
//BondsTreasury=DB.GetPortfolioTreasuryBondData(ID);
}
}
Код: Выделить всё
List Portfel = [];
Portfolio a = new("01", "Test");
Вот некоторый код БД, просто чтобы дать вам представление о том, что я там делаю. Я сократил его до двух методов, все остальные аналогичны, только с другим SQL-запросом.
Код: Выделить всё
public static class DB
{
///
/// Wysyła zaptanie do bazy i zwraca odpowiedź
/// baza zdefiniowana na stałe "portfele"
///
///
Zapytanie SQL
///
internal static List GetData(string SQLCommand)
{
var ConnStr = new MySqlConnectionStringBuilder
{
Server = "127.0.0.1",
UserID = "root",
Password = "",
Database = "portfele",
};
int i;
List result = new();
using MySqlConnection DB = new MySqlConnection(ConnStr.ConnectionString);
DB.Open();
using var SQL = new MySqlCommand(SQLCommand, DB);
using MySqlDataReader reader = SQL.ExecuteReader();
while (reader.Read())
{
List columns = new List();
for (i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader[i].ToString());
}
result.Add(columns);
}
DB.Close();
return result;
}
///
/// Pobiera dane o aktualnych lokatach portfela
///
/// ID portfela
///
internal static List GetPortfolioBankDepositData(string id)
{
List result = new();
string sql = $"SELECT * , SUM(A.Koszty)" +
$"FROM _{id}_LOKATY A " +
$"GROUP BY A.Nazwa " +
$"HAVING SUM(A.Wplata+A.Koszty)>0";
List dbData= GetData(sql);
foreach (var row in dbData)
{
BankDeposit b = new BankDeposit(row[1], "PLN", Convert.ToDecimal(row[2]));
b.Income = Convert.ToDecimal(row[5]);
result.Add(b);
}
result.Sort((x, y) => x.Name.CompareTo(y.Name));
return result;
}
}
Как этого избежать?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... ror-occurr
Мобильная версия