EnityFramework 데이터 1위에서 모델 클래스를 INotifyPropertyChanged에 대응
중앙 공민관
EF 데이터 우선 최고예요. 대응INotifyPropertyChanged
하면 더 멋있겠죠.
라고 적었다.
INotifyPropertyChanged를 설치하는 것은 매우 번거롭다
INotifyPropertyChanged를 자동으로 구현합니다.fody 완전 편해. - Azure 갑니다.
위의 글은
PropertyChanged.Fody
상당히 오래된 버전이기 때문에 지금 이 버전으로 실시하면 そんな古い形式使ってんじゃねーよばーかばーか
오류가 발생할 수 있으니 주의하세요.NotifyPropertyChanged.Foody 설치 방법
public class HogeModel{
public string Name{get;set;}
public int AnyNumber{get;set;}
}
이것 괜찮아요?using System.ComponentModel;
public class HogeModel{
public event PropertyChangedEventHandler PropertyChanged;
public string Name{get;set;}
public int AnyNumber{get;set;}
}
이렇게그런 다음 프로젝트에
FodyWeavers.xml
라는 파일을 추가합니다.FodyWeavers.xml
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<PropertyChanged/>
</Weavers>
그냥 이렇게 하는 거야.매우 편리합니다.INotify Pro를 eDMx로 내보내는 클래스에 설치하는 방법
eDMx를 구성하는 모델 출력용 T4 템플릿을 직접 편집하면 OK
PropertyChanged.Foody에 추가된 기술은요.
System.ComponentModel
INotifyPropertyChanged
PropertyChangedEventHandler
1. using 시스템.ComponentModel 추가
출력using은
codeStringGenerator.UsingDirectives()
입니다. 거기에 추가합니다.public string UsingDirectives(bool inHeader, bool includeCollections = true)
{
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
? string.Format(
CultureInfo.InvariantCulture,
"{0}using System;{1}" +
"{2}",
inHeader ? Environment.NewLine : "",
(includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "")
+Environment.NewLine +"using System.ComponentModel;", //これ
inHeader ? "" : Environment.NewLine)
: "";
}
2. class 정의에 INotifyPropertyChanged 추가
출력class가 정의한 것은
codeStringGenerator.EntityClassOpening()
public string EntityClassOpening(EntityType entity)
{
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1}partial class {2}{3}",
Accessibility.ForType(entity),
_code.SpaceAfter(_code.AbstractOption(entity)),
_code.Escape(entity),
":INotifyPropertyChanged"); //これ
//_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
}
(entity.BaseType은 사용하지 않기 때문에 가로로 되어 있습니다. 사용 시 적당히 수정하십시오.)3. 멤버에게 P opertyChangedEventeHandler 추가
템플릿 시작
EntityClassOpening(entity)
이후 직접 설명<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
<#=codeStringGenerator.EntityClassOpening(entity)#>
{
#pragma warning disable 0067
public event PropertyChangedEventHandler PropertyChanged; //これ
#pragma warning restore 0067
다만 추가PropertyChangedEventHandler
하면 CS0067(미사용 멤버)가 나와 답답해 사용pragma warning disable - restore
으로 경고 표시를 억제했다.[C#] 컴파일할 때 경고 억제 | anopara
그리고 파일 컴파일을 저장하면 됩니다.
이런 느낌으로 출력.
//------------------------------------------------------------------------------
// <auto-generated>
// このコードはテンプレートから生成されました。
//
// このファイルを手動で変更すると、アプリケーションで予期しない動作が発生する可能性があります。
// このファイルに対する手動の変更は、コードが再生成されると上書きされます。
// </auto-generated>
//------------------------------------------------------------------------------
namespace models
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
public partial class 銀行マスタ:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[Key]
public string 銀行コード { get; set; }
public string 銀行名 { get; set; }
public string 銀行カナ { get; set; }
}
}
좋아!용도 따위의
INotifyPropertyChanged
뱉으면 윈퍼스의 Data Binding과 WPF의 Binding이 자동으로 리셋되기 때문에 View 모델처럼 사용할 수도 있고 진짜라고 할 수도 있고 정말 최고예요.
Reference
이 문제에 관하여(EnityFramework 데이터 1위에서 모델 클래스를 INotifyPropertyChanged에 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/qyen/items/48d0c170b241a7d85d06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)